该代码在语法上与内核完美兼容。但是我必须编辑15,000多个文件,这就是为什么我决定使用多线程的原因。
使用具有6个处理器和8 GB RAM的PC,我最多可以处理2,000个文件。然后代码停止工作。注意:没有错误消息。它只是不再工作了。在任务管理器(python 3.6)上完成一个过程之后,它将再次运行。经过约100次迭代后,它再次停止。当我在那之后完成一个过程时,它就会继续。
我已经在Mac上尝试过该代码,同样的事情发生在1200个文件上。 我的泳池概念:
if __name__ == "__main__":
p = Pool(4)
p.map(parseAndSave, glob.glob(PATH_XML+"*.xml"))
p.close()
p.join()
整个代码在这里:https://pastebin.com/7tKvt5Jd
如何找到问题?
答案 0 :(得分:0)
我有点预感您的问题可能与硒有关。它在多处理环境中不能很好地工作(实际上是在创建子进程,而不是此处的线程)。
由于您似乎只想获取页面源的全部信息,而不以任何方式与页面进行交互,因此使用urllib.request.urlopen()
进行检索可能更安全,并且绝对可以更快,更可靠。这个。