多线程python代码将停止运行,直到进程终止

时间:2018-08-02 13:32:15

标签: python multithreading parallel-processing multiprocessing

该代码在语法上与内核完美兼容。但是我必须编辑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

如何找到问题?

1 个答案:

答案 0 :(得分:0)

我有点预感您的问题可能与硒有关。它在多处理环境中不能很好地工作(实际上是在创建子进程,而不是此处的线程)。

由于您似乎只想获取页面源的全部信息,而不以任何方式与页面进行交互,因此使用urllib.request.urlopen()进行检索可能更安全,并且绝对可以更快,更可靠。这个。