python是否容易使用ProcessPoolExecutor?
首先,我像这样使用python是否容易使用ProcessPoolExecutor?,python,multiprocessing,Python,Multiprocessing,首先,我像这样使用ProcessPoolExecutor: def s(i): time.sleep(1) return i futs = [] with ProcessPoolExecutor(max_workers=10) as executor: for i in range(WORKER_CNT): print executor.submit(s, i,).result() 但我发现这不是平行的,然后我改成: def s(i): tim
ProcessPoolExecutor
:
def s(i):
time.sleep(1)
return i
futs = []
with ProcessPoolExecutor(max_workers=10) as executor:
for i in range(WORKER_CNT):
print executor.submit(s, i,).result()
但我发现这不是平行的,然后我改成:
def s(i):
time.sleep(1)
return i
futs = []
with ProcessPoolExecutor(max_workers=10) as executor:
for i in range(WORKER_CNT):
futs.append(executor.submit(s, i,))
for f in futs:
print f.result()
def s(i):
time.sleep(1)
return i
futs = []
with ProcessPoolExecutor(max_workers=10) as executor:
for i in range(WORKER_CNT):
futs.append(executor.submit(s, i,))
if len(futs) == 10:
for f in futs:
print f.result()
futs = []
然后我开始担心WORKER\u CNT
可能太大,我需要等待很长时间才能看到最后的结果,因此我改为:
def s(i):
time.sleep(1)
return i
futs = []
with ProcessPoolExecutor(max_workers=10) as executor:
for i in range(WORKER_CNT):
futs.append(executor.submit(s, i,))
for f in futs:
print f.result()
def s(i):
time.sleep(1)
return i
futs = []
with ProcessPoolExecutor(max_workers=10) as executor:
for i in range(WORKER_CNT):
futs.append(executor.submit(s, i,))
if len(futs) == 10:
for f in futs:
print f.result()
futs = []
这次,我可以每次处理10
,我想知道我能更轻松地处理吗?您想使用Executor
类的方法:
def s(i):
time.sleep(1)
return i
with ProcessPoolExecutor(max_workers=10) as executor:
results = executor.map(s, range(WORKER_CNT))
它还有一些其他选项来控制执行的方式
请注意,结果
不是列表。它是一个迭代器,在计算值时接收值。因此,以下代码:
with ProcessPoolExecutor(max_workers=10) as executor:
for result in executor.map(s, range(WORKER_CNT)):
print(result)
一次只在内存中保存一个结果,因为它们只在几分之一秒内被消耗,并且需要更多的时间来生成