美文网首页
03、多进程学习之——第一个案例

03、多进程学习之——第一个案例

作者: 牛在A和C之间 | 来源:发表于2020-07-28 16:49 被阅读0次

    进程:
    是一个执行中的程序,由操作系统进行管理
    每个进程都拥有自己的地址空间、内存、数据栈以及其他用于跟踪执行的辅助数据,操作系统管理其上所有进程的执行,并且未这些进程合理地分配时间,进程也可以通过派生(fork或者spawn)新的进程来执行其他任务。

    第一个程序(使用函数的方法)

    import os
    import time
    from multiprocessing import Process
    
    def do_sth(name):
        """
        进程要做的事情
        :param name: 进程的名称
        """
        print('进程的名称:{0},id:{1}.'.format(name,os.getpid()))
        time.sleep(100)
        print('进程要做的事情')
    
    if __name__ == '__main__':
        # 参数这里传入一个元组,由于是一个元组且只有一个my process实参,所以这里要加上一个逗号
        p = Process(target=do_sth,args=('my process',))
        # 启动进程
        p.start()
        # 要看到结果,就要挂起进程
        p.join()
    
    

    第一个程序(使用类的方法)

    import os
    import time
    from multiprocessing import Process
    
    def do_sth(name):
        """
        进程要做的事情
        :param name: 进程的名称
        """
        print('进程的名称:{0},id:{1}.'.format(name,os.getpid()))
        time.sleep(100)
        print('进程要做的事情')
    
    # 使用类的方法来实现多进程
    class MyProcess(Process):
        # 假设还有其它参数传进来,所以保留*args, **kwargs
        def __init__(self, name, *args, **kwargs):
            # 注意,这里不能写成self.name,因为这个已经被源码用掉了
            self.my_name = name
            super().__init__(*args, **kwargs)
    
        def run(self):
            # 在类中,使用__init__方法将外面的参数传进来
            print('MyProcess进程的名称:{0},id:{1}.'.format(self.my_name, os.getpid()))
            time.sleep(100)
            print('MyProcess进程要做的事情')
    
    if __name__ == '__main__':
        # 使用函数的方法实现多进程
        # 参数这里传入一个元组,由于是一个元组且只有一个my process实参,所以这里要加上一个逗号
        # p = Process(target=do_sth,args=('my process',))
        # 使用类构造的方法实现多进程
        p = MyProcess('my process class')
        # 启动进程
        p.start()
        # 要看到结果,就要挂起进程
        p.join()
    
    

    相关文章

      网友评论

          本文标题:03、多进程学习之——第一个案例

          本文链接:https://www.haomeiwen.com/subject/xbzfrktx.html