函数不在多处理中打印

Function does not print in multiprocessing

我有这段运行多处理功能的代码。

在此代码中,函数 do_something 休眠并打印内容。

睡着了(好)

但它不打印任何东西(坏)

出了什么问题,如何解决?

谢谢

代码如下:

import concurrent.futures
import time

start = time.perf_counter()

def do_something(seconds):
    print(f"Sleeping {seconds} second(s)...")
    time.sleep(seconds)
    return f'Done Sleeping...{seconds}'

def main():    
    with concurrent.futures.ProcessPoolExecutor() as executor:
        secs = [5, 4, 3, 2, 1]
        results = executor.map(do_something, secs)
        
        for result in results:
             print(result)
    
    finish = time.perf_counter()
    
    print(f'Finished in {round(finish-start, 2)} second(s)')

if __name__ == "__main__":
    main()
else:
    print("run from import")

这是我的结果:

runfile('G:/OneDrive/__PhD/Research/01-BasicModel/43.py', wdir='G:/OneDrive/__PhD/Research/01-BasicModel')
Done Sleeping...5
Done Sleeping...4
Done Sleeping...3
Done Sleeping...2
Done Sleeping...1
Finished in 5.24 second(s)

没有Sleeping {seconds} second(s)...

P.S。 OS = Windows 10 编辑:Spyder

这是您的编辑器的副作用。这些进程显然没有继承重定向到您的编辑器的特殊标准输出。当我从命令行 运行 你的代码时,我得到:

run from import
run from import
run from import
run from import
Sleeping 1 second(s)...
run from import
Sleeping 2 second(s)...
run from import
Sleeping 3 second(s)...
run from import
Sleeping 4 second(s)...
run from import
Sleeping 5 second(s)...
Done Sleeping...5
Done Sleeping...4
Done Sleeping...3
Done Sleeping...2
Done Sleeping...1
Finished in 5.29 second(s)