python 中的并发 futures 不等待进程完成
Concurrent futures in python doesn't wait for processes to finish
我有一个函数,main(),它生成 4 个进程,并最终开始执行它们,但是一旦它开始多次,它就会循环遍历整个代码块。我想要做什么我认为是显而易见的; print "hello1",执行进程(因此执行 print 语句),然后打印 "hello2"
我做错了什么?如果更容易的话,也会对使用 multiprocessing.Process() 的解决方案持开放态度,但我也遇到了同样的问题。
def funcy(c):
print("Hi " + str(c))
for e in range(1000):
e = e
return c*2
print("hello1")
def main():
with concurrent.futures.ProcessPoolExecutor() as executor:
f = [1,2,3,4]
results = executor.map(funcy,f)
for result in results:
print(result)
if __name__ == '__main__':
main()
print("hello2")
我认为主要问题是 for 循环在 concurrent.futures
调用的 with
上下文管理器中缩进。此外, print("hello1")
似乎不合适。 print("hello2")
需要缩进。
我认为下面的编辑是您要找的...也许...
import concurrent.futures
def funcy(c):
print("Hi " + str(c))
for e in range(1000):
e = e
return c*2
def main():
with concurrent.futures.ProcessPoolExecutor() as executor:
f = [1,2,3,4]
results = executor.map(funcy,f)
for result in results:
print(result)
if __name__ == '__main__':
print("hello1")
main()
print("hello2")
我有一个函数,main(),它生成 4 个进程,并最终开始执行它们,但是一旦它开始多次,它就会循环遍历整个代码块。我想要做什么我认为是显而易见的; print "hello1",执行进程(因此执行 print 语句),然后打印 "hello2"
我做错了什么?如果更容易的话,也会对使用 multiprocessing.Process() 的解决方案持开放态度,但我也遇到了同样的问题。
def funcy(c):
print("Hi " + str(c))
for e in range(1000):
e = e
return c*2
print("hello1")
def main():
with concurrent.futures.ProcessPoolExecutor() as executor:
f = [1,2,3,4]
results = executor.map(funcy,f)
for result in results:
print(result)
if __name__ == '__main__':
main()
print("hello2")
我认为主要问题是 for 循环在 concurrent.futures
调用的 with
上下文管理器中缩进。此外, print("hello1")
似乎不合适。 print("hello2")
需要缩进。
我认为下面的编辑是您要找的...也许...
import concurrent.futures
def funcy(c):
print("Hi " + str(c))
for e in range(1000):
e = e
return c*2
def main():
with concurrent.futures.ProcessPoolExecutor() as executor:
f = [1,2,3,4]
results = executor.map(funcy,f)
for result in results:
print(result)
if __name__ == '__main__':
print("hello1")
main()
print("hello2")