python多处理根本不工作

时间:2013-03-05 23:44:59

标签: python python-2.7 multiprocessing

所以我拿了下面的代码,运行它,几乎什么都没发生。 Python的行为就像它完成了一切(也许它已经完成)但没有打印出来。任何有助于此工作的帮助将不胜感激!

import multiprocessing

def worker(number):
    print number
    return

if __name__ == '__main__':
    test = multiprocessing.Process(target=worker, args=[0,1,2,3,4])
    test.start()

3 个答案:

答案 0 :(得分:4)

您的代码实际上应该导致错误。 args的{​​{1}}参数不会为每个参数打开一个进程,它只是将列表中的参数提供给单个函数,然后在子进程中调用该函数。要运行这样的5个单独的实例,您必须执行以下操作:

multiprocessing.Process()

答案 1 :(得分:0)

您的代码尝试在新进程中运行worker(0,1,2,3,4)。如果要在多个进程中并行执行worker()函数:

from multiprocessing import Pool

def worker(number):
    return number*number

if __name__ == '__main__':
    pool = Pool() # use all available CPUs
    for square in pool.imap(worker, [0,1,2,3,4]):
        print(square)

答案 2 :(得分:0)

运行时,您的代码会导致错误。由于使用逗号解析args,因此需要指定整个数组由单个参数组成。

import multiprocessing

def worker(number):
    print number
    return

if __name__ == '__main__':
    test = multiprocessing.Process(target=worker, args=([0,1,2,3,4],))
    test.start()
    test.join()

另外,不要忘记最后加入这个过程。