为什么多处理不起作用?

时间:2016-11-15 14:59:19

标签: python process multiprocessing

我有这段代码:

import multiprocessing


def worker():
    print 'Worker'
    return

if __name__ == '__main__':
    jobs = []
    for i in range(5):
        p = multiprocessing.Process(target=worker)
        jobs.append(p)
        p.start() 

无论出于何种原因,它会打印“工人”两次并停止。有谁知道为什么?我做错了什么?

1 个答案:

答案 0 :(得分:1)

在定义的“核心”值上使用Python启动多处理任务,您最好选择创建一个池并在该池内启动Process。

 pool = multiprocessing.Pool()
 for i in range(5):
     pool.apply_async(worker)
 pool.close()

但如果你想在途中这样做,我认为你必须添加一个p.join()

import multiprocessing


def worker():
    print 'Worker'
    return

if __name__ == '__main__':
    jobs = []
    for i in range(5):
        p = multiprocessing.Process(target=worker)
        jobs.append(p)
        p.start() 
        p.join()