所以我拿了下面的代码,运行它,几乎什么都没发生。 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()
答案 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()
另外,不要忘记最后加入这个过程。