Python中的并发未来未等待进程完成
我有一个叫做 main() 的函数,它会生成 4 个进程,并最终开始执行它们,但一旦开始,它会多次循环执行这段代码。我想要的效果应该很明显:先打印“hello1”,然后执行这些进程(也就是执行打印语句),最后再打印“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")
相关问题:
- 暂无相关问题
1 个回答
0
我觉得主要的问题在于,for循环被放在了with
上下文管理器里面,这个是用来处理concurrent.futures
的调用。另外,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")