python进程

 

本来的主进程是当前运行的程序  执行到os.fork()时候,又创建了一个子进程  主进程向下执行,子进程也继续向下运行,根据返回值的不同分别执行下面的代码  可以使用os.getpid()得到当前进程的父进程的进程号

如果父进程先执行完毕,那么先退出,子进程可以继续执行,即他们各自执行,代码是同一份代码,但数据是各自独有的,互不影响,哪怕是全局变量,也不互相影响。

fork只能用在类Linux系统中,不能再Windows    那么python提供了Process 

用fork创建的子进程,可以和主进程不同时执行完毕,而Process方法中,主进程需要等到子进程执行完毕再完成

p.join(timeout)   //堵塞,等待p进程结束之后,主程序才会往下走  p.terminate()直接结束某个子进程

 

也可以自定义类继承Process,并重写run方法     并用自定义类创建的对象调用start方法。  然后start自动调用子类中的run方法,这里明明没有start 方法,因为他在Process类中定义,这里就用到了工厂方法模式。

 

进程池:

这里注意需要加入join  否则主进程关闭后,进程池也会消失,那么无法继续执行子进程

 

僵尸进程-----子进程结束,父亲没有对其进行收尸,在收尸之前的这段期间就叫做僵尸进程

孤儿进程------父进程over,子进程还没结束  那么需要系统进行孤儿的收尸  

 

pool.apply(worker)  这种方式以堵塞的方式执行  必须执行完一个worker添加后,执行完成才再进行下一个worker的添加

apply一般不用  一般用apply_async()

 

进程间通信-Queue:

 创建队列进行参数的传递                     

线程池进行参数传递的话  需要创建Manager  然后使用Manager().Queue()队列传递信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值