天天看点

进程(p)运行,idle与PyCharm的不同

背景:

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