我遇到了一些代码问题。请记住,我是一个糟糕的程序员,所以我的解决方案可能不是很有说服力(很可能是我内存不足的原因-我有4G字节,而脚本会慢慢填充它)。在
问题就在这里。我在一个目录里有大约3500个文件。每个文件由一行组成,其中可能包含相对较少或很多字符,没有空格(最小的文件为200字节,最大的为1.3兆字节)。我要做的是在这两个文件之间找到一个公共的子串,每次两个文件的长度是固定的(在下面的代码中是13个字符)。我一次做两个,因为我不是在所有的子串中寻找一个公共的子串,而是两个的组合,直到所有的文件都被比较过。一、 例如,文件之间任何一个固定长度的公共子字符串,而不是所有文件的公共子字符串。在
我使用一个后缀树模块来包装C实现(over here)。首先我列出目录中的所有文件,然后查找两个文件的组合,以便覆盖所有的组合,我一次将两个文件传递到后缀树,然后查找常见子字符串的序列。在
然而,我真的不知道为什么它慢慢地耗尽了记忆。我希望我们可以对代码做一个修改,这样它就可以以某种方式清除未使用的内存?显然3500个文件需要很长的时间来处理,但我希望这是可能的,不需要递增地填充4GB的内存。任何帮助将不胜感激!以下是我目前掌握的代码:from suffix_tree import GeneralisedSuffixTree
from itertools import combinations
import glob, hashlib, os
alist = open('tmp.adjlist', 'w')
def read_f(f):
f = open(f, "r")
<