我正在使用多处理库学习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
答案 0 :(得分:0)
Process
为您提供了一个额外的线程(在您的主进程中,它为您提供了两个进程)。在每个循环结束时对join
的调用将等待该进程在开始下一个循环之前完成。如果您坚持使用Process
,则需要存储返回的进程(可能在列表中),并在当前循环之后在循环中连接每个进程。
您希望来自Pool
(https://docs.python.org/2/library/multiprocessing.html#module-multiprocessing.pool)
multiprocessing
班级