• 并发编程---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) # 打印进程名称
  • 相关阅读:
    gw经销商上传部分代码
    lib
    【转】sql server的随机函数newID()和RAND()
    【源码】仿qq记住登录信息
    关于ConfigurationManager类
    oracle 10 协议适配器错误解决办法
    配置对象数据源时,无法找到业务对象的解决办法
    private的由来,让能你很容易地区分private与protected的用法!
    大树扎根不稳,缘何不倒?
    Html服务器控件常用属性InnerHtml属性及InnerText属性的区别
  • 原文地址:https://www.cnblogs.com/Mryang123/p/8886731.html
Copyright © 2020-2023  润新知