我试图运行一个函数与多处理。这是代码:蟒蛇多处理找不到错误
import multiprocessing as mu
output = []
def f(x):
output.append(x*x)
jobs = []
np = mu.cpu_count()
for n in range(np*500):
p = mu.Process(target=f, args=(n,))
jobs.append(p)
running = []
for i in range(np):
p = jobs.pop()
running.append(p)
p.start()
while jobs != []:
for r in running:
if r.exitcode == 0:
try:
running.remove(r)
p = jobs.pop()
p.start()
running.append(p)
except IndexError:
break
print "Done:"
print output
输出是[],而它应该是[1,4,9,...]。有人看到我犯了一个错误?
Cursory瞥了一下代码,你在哪里等待工作完成? 'jobs.join()'在哪里?似乎也缺乏锁定,但我还没有弄清楚你的逻辑。 – cdarke
用while和if if r.exitcode == 0,我认为 –
@cdarke是什么? 'None!= 0' – jonrsharpe