Python 多进程完全无法工作
我运行了下面的代码,但真的没有任何反应。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
你的代码在我运行的时候出现了错误。因为参数是用逗号分开的,所以你需要说明整个数组是一个单独的参数。
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()
另外,别忘了在最后加入这个过程。
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)
4
你的代码实际上应该会出错。因为在 multiprocessing.Process()
中的 args
参数并不是为每个参数打开一个新进程,而是把列表中的参数传给一个单独的函数,然后在一个子进程中调用这个函数。如果你想要运行5个独立的实例,你需要这样做:
import multiprocessing
def worker(number):
print number
return
if __name__ == '__main__':
procs = []
for i in range(5):
procs.append(multiprocessing.Process(target=worker, args=[i]))
[proc.start() for proc in procs]