我正在用Python实现Kosaraju的强连接组件(SCC)图搜索算法.
该程序在小数据集上运行良好,但是当我在超大图(超过800,000个节点)上运行它时,它会显示"Segmentation Fault".
可能是什么原因造成的?谢谢!
附加信息:首先,我在超大型数据集上运行时出现此错误:
"RuntimeError: maximum recursion depth exceeded in cmp"
Run Code Online (Sandbox Code Playgroud)
然后我使用重置递归限制
sys.setrecursionlimit(50000)
Run Code Online (Sandbox Code Playgroud)
但得到了"分段错误"
相信我,它不是一个无限循环,它在相对较小的数据上运行正确.该计划有可能耗尽资源吗?
我有一个文件,该文件包含超过400万行,我希望逐行读取它们,并对第一个“列”数据执行操作。可能有重复的数据,我想确保只执行一次这些操作,并且能够重新启动程序并从上次中断的地方开始。
我的解决方案是解析该行,将值存储到列表中,然后“如果x不在列表中”执行操作,然后在程序死/停止/被杀死时将该列表存储为泡菜。
但是,脚本运行了几个小时后会出现段错误,我认为这是因为由于在checkedFile列表中存储了大量MD5和,因此我已经烧光了所有RAM。
因为文件太大(超过400万个条目),所以我需要快速查找的东西,希望有一个简单的解决方案。谢谢!
数据如下所示:6e5f6c90e6bf31c31283afb8dca93da8 | mouse.gif | 10102017
我当前的代码如下所示:
checkedFile = []
def readline(inFile):
print("Opening file: %s\n" % inFile)
try:
with open(inFile, "r") as inputFile:
for line in inputFile: # read in file line by line
fileHash, garbage = line.split("|",1)
if fileHash not in checkedFile:
checkedFile.append(fileHash)
checkit(fileHash) #
Run Code Online (Sandbox Code Playgroud)