Python并发编程-进程知识总结

1.进程
  1. 开启进程的两种方式
  • from multiprocessing import Process
    import time
    
    def foo(name):
        print("{} is running!".format(name))
        time.sleep(2)
        print("{} is done!".format(name))
        
        
    if __name__ == '__main__':
        p = Process(target= foo, args= ("进程1"))
        p.satrt()
        print("等待运行进程......")
        
    >>> 等待运行进程......
    >>> 进程1 is running!
    >>> 进程1 is done!
    
  • from multiprocessing import Process
    import time
    
    class MyProcess(Process):
        
        def __init__(self, name):
            super().__init__()
            self.name = name
            
        def run(self):
            print("{} is running!".format(self.name))
            time.sleep(2)
            print("{} is done!".format(self.name))
            
    if __name == '__main__':
        p = MyProcess("进程2")
        p.start()
        print("等待运行进程......")
            
    >>> 等待运行进程......
    >>> 进程2 is running!
    >>> 进程2 is done!
    
  1. 查看进程pid(自己进程)和ppid(父进程)
  • from multiprocessing import Process
    import time
    import os
    
    
    def foo():
        print("{} is running! parent ID is {}".format(os.getpid(), os.getppid()))
        time.sleep(2)
        print("{} is done! parent ID is {}".format(os.getpid(), os.getppid()))
    
    
    if __name__ == '__main__':
    
        p = Process(target=foo, )
        p.start()
    
        print("进程等待运行", os.getpid(), os.getppid())
        
    >>> 进程等待运行 4900 5220
    >>> 5364 is running! parent ID is 4900
    >>> 5364 is done! parent ID is 4900
    
  1. 僵尸进程+ 孤儿进程
  • 僵尸进程:当子进程结束时,并不会全部销毁,当父进程结束时才会销毁。

  • 孤儿进程:当父进程比子进程先结束时,这个子进程就被称为孤儿进程,统一被init接管

  1. join方法:可以实现执行完子进程再执行主进程
  • join应用场景:

    1. 在主进程的任务与子进程的任务彼此独立的情况下,当主进程的先执行完成,需要等待全部子进程任务完成,进行统一回收数据。
    2. 如果主进程的任务在执行到某一个阶段时,需要等待子进程执行完毕后才能继续执行,就需要有一种机制能够让主进程检测子进程是否运行完毕,在子进程执行完毕后才继续执行,否则一直在原地阻塞,这就是join方法的作用
  • from multiprocessing import Process
    
    
    def foo(name):
        print("{} is runing!".format(name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值