zoukankan      html  css  js  c++  java
  • 并发编程---Process对象的其他属性或方法

    Process对象的其他属性或方法

    #join方法
    from multiprocessing import Process
    import time,os
    
    '''
    需求:让主进程等着子进程运行完毕,才能基于子进程运行的结果,进而执行。
    '''
    def task():
        print('%s is running,parent id is <%s>' %(os.getpid(),os.getppid()))
        time.sleep(3)
        print('%s is done,parent id is <%s>' %(os.getpid(),os.getppid()))
    
    if __name__ == '__main__':
        p = Process(target=task,)
        p.start()
    
        p.join()# 主进程会在着等,等的过程中一直运行子进程
        print('',os.getpid(),os.getppid())
        print(p.pid)
    
    
    ###并发###
    from multiprocessing import Process
    import time,os
    '''
    需求:让主进程等着子进程运行完毕,才能基于子进程运行的结果,进而执行。
    '''
    def task(name,n):
        print('%s is running' %name)
        time.sleep(n)
    
    if __name__ == '__main__':
        start=time.time() # 判断三个子进程是并发的,还是串行
        p1 = Process(target=task,args=('子进程1',5))
        p2 = Process(target=task,args=('子进程2',4))
        p3 = Process(target=task,args=('子进程3',3))
        p_l=[p1,p2,p3]
    
        # p1.start()
        # p2.start()
        # p3.start()
        for p in p_l:
            p.start()
    
        # p1.join()
        # p2.join()
        # p3.join()
        for p in p_l:
            p.join()
        # p.start只是发一个信号,操作系统可能接收其他程序发的信号,不回去考虑谁先发送的信号,是统筹管理的
        print('',(time.time()-start))
    
    
    ###串行###
    from multiprocessing import Process
    import time,os
    '''
    需求:让主进程等着子进程运行完毕,才能基于子进程运行的结果,进而执行。
    '''
    def task(name,n):
        print('%s is running' %name)
        time.sleep(n)
    
    if __name__ == '__main__':
        start=time.time() # 判断三个子进程是并发的,还是串发
        p1 = Process(target=task,args=('子进程1',5))
        p2 = Process(target=task,args=('子进程2',4))
        p3 = Process(target=task,args=('子进程3',3))
    
        p1.start()
        p1.join()
        p2.start()
        p2.join()
        p3.start()
        p3.join()
        # p.start只是发一个信号,操作系统可能接收其他程序发的信号,不回去考虑谁先发送的信号,是统筹管理的
        print('',(time.time()-start))
    
    ###了解###
    from multiprocessing import Process
    import time,os
    
    def task():
        print('%s is running,parent id is <%s>' %(os.getpid(),os.getppid()))
        time.sleep(3)
        print('%s is done,parent id is <%s>' %(os.getpid(),os.getppid()))
    
    if __name__ == '__main__':
        # p = Process(target=task,)
        # p.start()
        # print(p.is_alive()) # 打印结果:False
        # p.join()
        # print('主',os.getpid(),os.getppid())
        # print(p.pid) # 打印进程id
        # print(p.is_alive()) # 查看进程是死是活 打印结果:False
    
        p = Process(target=task,name='sub--Process')
        p.start()
        p.terminate() # 干死进程,但是只是给操作系统发一个信号,系统需要反应一段时间
        time.sleep(3)
        print(p.is_alive()) # 打印结果:False
        print('')
        print(p.name) # 打印进程名称
  • 相关阅读:
    ACID
    Elasticsearch SQL
    【协议】AAA Radius协议的常用报文分析
    【linux】内核-模块(驱动)命令原理
    【linux】masm汇编系统调用说明
    pytest 8+.yaml文件详解---实现接口自动化
    谷歌 Chrome 浏览器将迎来设计、媒体播放控件改进
    长期免费的通配符证书获取 2021年最新方法
    Flink:部署运行
    Linux:nc命令
  • 原文地址:https://www.cnblogs.com/Mryang123/p/8886731.html
Copyright © 2011-2022 走看看