函数不在多处理中打印
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)
我有这段运行多处理功能的代码。
在此代码中,函数 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)