python多进程 通过for循环 join 的问题

代码如下:

import os
from multiprocessing import Process
def func(num):
  print('in func',num,os.getpid(),os.getppid())

if __name__ == '__main__':
  print('in main',os.getpid(),os.getppid())
  p_l = []
  for i in range(10):
    p = Process(target=func,args=(i,))
    p.start()  # start不是运行一个程序,而是调用操作系统的命令,要创建子进程,非阻塞
    p_l.append(p)
  print(p_l)
  for p in p_l :
  p.join() # 阻塞,直到p这个子进程执行完毕之后再继续执行
  print('主进程 的 代码执行结束了')
执行结果如下:

https://img3.mukewang.com/5b9634690001f5f907320304.jpg

问题:

有没有可能在 for 循环 join的时候,比如现在循环到p3.join了,但是p3已经执行完毕了,这时候有没有可能会打印最后那句 print("主进程 的 代码之行结束了")


暮色呼如
浏览 1084回答 1
1回答

潇湘沐

你都阻塞了。循环没有结束,不能执行后面的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python