zoukankan      html  css  js  c++  java
  • 进程的开启、join方法、守护进程

    开启进程的两种方式

    方式一:

    from multiprocessing import Process
    
    def task(name):
        print('hello', name)
    	print('我是子进程')
        
    if __name__ == '__main__':
        p = Process(target=f, args=('bob',))
        p.start()
        time.sleep(1)
        print('执行主进程的内容了')
    

    方式二:

    import os
    from multiprocessing import Process
    
    class Task(Process):
        def __init__(self, name):
            super().__init__()
            self.name = name
        def run(self):
            print(os.getpid())
            print(f'{self.name}正在和女主播聊天')
        
    if __name__ == '__main__':
        p = Task('nick')
    	p.start()
    

    join方法

    作用:阻塞,等待子进程完成。

    from multiprocessing import Process
    import time,os
    
    def task(s):
        time.sleep(s)
        
    if __name__ == '__main__':
        p1 = Process(target=task, args=(1,))
        p2 = Process(target=task, args=(2,))
        p3 = Process(target=task, args=(3,))
        
        p1.start()
        p2.start()
        p3.start()
        p1.join()  # 等1s
        p2.join()  # 等1s
        p3.join()  # 等1s,内部会调用wait()
        print('子进程', p1.pid)
        print('主进程', os.getpid())  # 主进程要等待所有的子进程结束才会结束,因为主进程									要在结束前回收僵尸进程
        
    

    守护进程

    守护进程的本质也是一个进程

    主进程的代码执行完毕,守护进程直接结束。

    大前提:主进程结束之前守护进程一直运行着

    from multiprocessing import Process
    import time
    
    def task():
        print('守护进程 start')
        time.sleep(4)
        print('守护进程 end')
    
    if __name__ == '__main__':
        p = Process(target=task)
    	p.daemon = True
        p.start()
        time.sleep(2)
        print('主进程...')
    
  • 相关阅读:
    事务
    一、python 基础之基础语法
    二、python 中五种常用的数据类型
    三、python函数详解
    四、 面向对象(一)
    五、面向对象(二)——继承与重写
    六、异常处理、日志打印、文件操作
    scrapy(一):基础用法
    # scrapy(二):get请求
    scrapy(三):post请求
  • 原文地址:https://www.cnblogs.com/17vv/p/11527742.html
Copyright © 2011-2022 走看看