背景:
win8.1, python idle 3.9.7, pycharm 2021.3.1
现象:
进程(p)创建后运行的代码,在idle中与pycharm不同。
解决办法:
pycharm中可以调用子进程: p.start() 和 p.run()都可以
#idle中,则只有p.run()才可以调用子进程,p.start()不行。
[更新] idle中, p.run()会执行子进程的print语句,但p.start()不会执行print语句。如果子进程中有time.sleep()语句,p.start()也会执行time.sleep()语句。
[更新] 用vs code (我的是1.64.2)可以完全演示p.join() 和 p.join(timeout)的作用
例子
from multiprocessing import Process
from time import sleep #更新
def run_test():
print("...run_test 开始...") #更新
sleep(10) #更新
print("...run_test 结束...") #更新
if __name__ == "__main__":
print("主进程进行中")
#p = Process(target=run_test()) # 不需要调用p.run()
p = Process(target=run_test)
#p.start() #只在pycharm中可以调用run_test
p.run() #在pycharm (2021.3.1) 和 idle(python3.9.7自带)都可以调用run_test