ITPub博客

首页 > 应用开发 > > python多进程 通过for循环 join 的问题

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

作者:samenzhou 时间:2019-09-17 09:42:35 0 删除 编辑

代码如下:

import os

from multiprocessingimport 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 iin range(10):

p= Process(target=func,args=(i,))

p.start() # start不是运行一个程序,而是调用操作系统的命令,要创建子进程,非阻塞

p_l.append(p)

  print(p_l)

  for pin p_l:

p.join() # 阻塞,直到p这个子进程执行完毕之后再继续执行

  print('主进程 的 代码执行结束了')

执行结果如下:

in main 10388 1160

[, , , , , , , , , ]

in func 1 5836 10388

in func 0 12936 10388

in func 2 12856 10388

in func 4 13448 10388

in func 5 12516 10388

in func 3 5048 10388

in func 6 6664 10388

in func 7 12916 10388

in func 8 12172 10388

in func 9 6824 10388

主进程 的 代码执行结束了

 

 

问题:

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

 

急急急,这个问题想了很久,实在是想不明白了

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/912/viewspace-3139686/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-19

  • 博文量
    104
  • 访问量
    1057