
正文
并发编程时守护进程在pycharm与python shell中的运行结果不同
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
原代码如下
from multiprocessing import Process
import time
import random def task(name):
print('%s is running' % name)
time.sleep(random.randint(2, 3))
print('%s is finished' % name) if __name__ == '__main__':
p = Process(target=task, args=('Subprocess',))
p.daemon = True # 子进程设置为守护进程
p.start() print('Parent process is finished')
Python shell运行结果
Parent process is finished
PyCharm运行结果
Parent process is finished
Subprocess is running
Subprocess is finished
结果分析
在原代码14行处,把子进程设置成了守护进程,守护进程会在主进程代码结束后就终止,显然Python shell的运行结果是对的
解决方法
pycharm工具栏---->run---->Edit Configurations,Execution---->run with python console得到的是错误结果,Execution---->Emulate terminal in output console或者Execution下面都不选择得到的是正确的结果。如下图所示:








