我编写了一个python脚本来读取文本文件,并将其信息放入字典中。原始文本文件为2.6GB,包含56981936行,其中我只需要将第一行链接到字典中的第二行和第四行。我最近从windows(如果这个程序运行正常的话)切换到Linux,在那里它不断被杀死。有人知道为什么吗
文本格式为fastQ文件,其中包含以下格式的重复行:
@xxxxxxxxxxx
CTTCTCAACTC
+
AAAEE#AEE#A
这是我的原始代码:
def createReverseDict(backwardsFile):
reverseDict = {}
with open(backwardsFile) as f3:
while True:
label = f3.readline().rstrip()
if not label:
break
sequence = f3.readline().rstrip()
next(f3)
score = f3.readline().rstrip()
reverseDict[label] = {"sequence" : sequence,
"score" : score }
return reverseDict
如果您使用的是windows,那么最好使用任务管理器来增加专用RAM、线程或优先级的数量。但是,在Linux的任务管理器上,可以使用终端。我不熟悉确切的命令,所以你可能需要用谷歌搜索这些命令
我创建了一个100MB的小文件(比您的小得多,但格式类似),并使用
namedtuple
来提高内存性能。我还使用tracemalloc来了解使用了多少内存对于这里的常规词典
reverseDict[label] = dict(sequence = sequence, score = score)
,我的跑步记录如下通过使用
collections.namedtuple
,它减少了很多。几乎一半及
函数内部。内存使用率下降到
如果你这样做了,也许OOM杀手根本就不会出现。但是,如果确实如此,您可以使用this link中的详细信息来提高OOM限制。使用完全禁用它
我不能保证这是多么安全,但你应该能够尝试它,一旦你做了重新启动系统,让它回到默认值
相关问题 更多 >
编程相关推荐