1

我有一个函数 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")
4

1 回答 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")
于 2020-05-18T23:58:40.373 回答