Python的多处理不是并行创建任务

时间:2016-03-25 22:41:14

标签: python multithreading python-multiprocessing

我正在使用多处理库学习python中的多线程。为此,我尝试创建一个程序,将一个大文件分成几个较小的块。因此,首先我读取该文件中的所有数据,然后创建从该输入文件中获取一部分数据的工作任务,并将该段写入文件。我希望有尽可能多的并行线程作为段的数量运行,但这不会发生。我看到最多两个任务,程序在此之后终止。我做错了什么。代码如下。

import multiprocessing

def worker(segment, x):
    fname = getFileName(x)
    writeToFile(segment, fname)

if __name__ == '__main__':  
    with open(fname) as f:
        lines = f.readlines()
    jobs = []
    for x in range(0, numberOfSegments):
        segment = getSegment(x, lines)
        jobs.append(multiprocessing.Process(target=worker, args=(segment, x)))
        jobs[len(jobs)-1].start()
    for p in jobs:
        p.join

1 个答案:

答案 0 :(得分:0)

Process为您提供了一个额外的线程(在您的主进程中,它为您提供了两个进程)。在每个循环结束时对join的调用将等待该进程在开始下一个循环之前完成。如果您坚持使用Process,则需要存储返回的进程(可能在列表中),并在当前循环之后在循环中连接每个进程。

您希望来自Poolhttps://docs.python.org/2/library/multiprocessing.html#module-multiprocessing.pool

multiprocessing班级