1.问题描述:
看网课学习python,昨天学到进程池和进程之间的通信。
看老师的视频时运行正确,自己确实没出想象中的效果。
在windows上用python学习multiprocessing模块的进程池,在pycharm中程序创建了进程池,但是却没用进入子进程?但是在命令窗口去可以进入子进程。
代码:
# 测试进程池的使用
from multiprocessing import Pool
import time, os
def work(num):
print('咋了?', end='\t')
print(5*num)
time.sleep(1)
if __name__ == "__main__":
print('Parent process %s.' % os.getpid())
# 定义一个进程池,设置最大进程为4,默认为cpu核心数
po = Pool(4)
for i in range(10):
# 调用apply_saync()方法,apply_saync选择要调用的目标,以及将目标需要的参数
# 以元组形式传递,每次循环都会用空出来的进程去调用目标。
po.apply_async(func=work, args=(i,))
# 关闭进程池,只准许进程从进程池出来,不准进入进程池
po.close()
# 主进程等待子进程结束,必须写再close后。
po.join()
print('子进程结束')
然后在pycharm的运行结果是既没有报错也没有执行子进程的指令
图是这样的:
![图片说明](https://img-ask.csdn.net/upload/201901/16/1547605427_367407.png)
为了给各位大佬提供更多信息,我在循环那debug了下,尽管我目前还看不懂。
![图片说明](https://img-ask.csdn.net/upload/201901/16/1547605634_254497.png)
在Windows的命令窗口下直接运行结果就有了。貌似得到我的结果了。
![图片说明](https://img-ask.csdn.net/upload/201901/16/1547605512_956498.png)
说明:昨天也查了半天资料,说的都是加if __name__ == "__main__":
来保证正常,可是我还是出问题了!
请各位大佬指点迷津,拯救一个初学者吧。