• 进程之进程创建的两种方式,两种传值的方式,验证进程间数据隔离,join,守护进程,僵尸进程,孤儿进程


    import os
    import time
    from multiprocessing import Process
    global_num=100 #全局变量
    def func (name,age):
        print('子进程name,age:',name,age)
        print('子进程ID:',os.getpid())
        global global_num
        global_num=0
        print('子进程global:',global_num)
    class myProcess(Process):
        def __init__(self,name,age):
            super().__init__()
            self.name=name
            self.age=age
        def run(self):#start最后调用run方法
            print('子进程id',os.getpid())
    if __name__ == '__main__':
        p1=Process(target=func,args=('chuxi',18))#创建进程的第一种方法,传值的第一种方法
        p1.start()
        p1.join()  # 主进程等待p1子进程运行完在运行,阻塞
        print('p1子进程的id:',p1.pid)
        p2 = Process(target=func, kwargs={'name': 'chuxi', 'age': 18})#传值的第二种方法
        p2.start()
        print('主进程的global_num:',global_num)#证明进程之间数据隔离
        p2.terminate()#p2进程像操作系统发出关闭指令
        time.sleep(1)
        print('p2进程是否还存在:',p2.is_alive())
        #可以主进程有input,子进程不可以有
        lst=[]
        for i in range(10):
            p4 = Process(target=func, args=('hah', 18))
            p4.start()
            lst.append(p4)
        for el in lst:
            el.join()
        p3 = myProcess('chuxi', 18)#创建进程的第二种方法
        #需要强调的是,p.join只能join住start开启的进程,而不能join住run开启的进程 
        p3.daemon = True  # 把p3进程设置为主进程的守护进程,主程序结束他就跟着结束
       p3.start() 

      

  • 相关阅读:
    Leetcode 第135场周赛解题报告
    程序员如何当好面试者
    程序员如何当好面试官
    Leetcode 第133场周赛解题报告
    如何高效工作——团队篇
    程序员如何高效工作——个人软件篇
    程序员如何高效工作——个人硬件篇
    HTTP协议:从原理到流程|乐字节
    Tomcat详解|乐字节
    说说Java Web中的Web应用程序|乐字节
  • 原文地址:https://www.cnblogs.com/PythonMrChu/p/9837577.html
Copyright © 2020-2023  润新知