<blockquote id="shwb3"><ruby id="shwb3"></ruby></blockquote>
  • <small id="shwb3"><strong id="shwb3"></strong></small>

      1. <big id="shwb3"></big>
        1. 首页 > 编程语言 > 详细

          python 开启进程两种方法 multiprocessing模块 介绍

          时间:2019-06-16 00:45:09      阅读:67      评论:0      收藏:0      [点我收藏+]

          标签:cti   pip   拷贝   section   模块   process类   资源   python   style   

           

           

          一 multiprocessing模块介绍

          python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进程。

          Python提供了multiprocessing。 multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。

          multiprocessing模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步,>提供了Process、Queue、Pipe、Lock等组件。

          需要再次强调的一点是:与线程不同,进程没有任何共享状态,进程修改的数据,改动仅限于该进程内。

           

           

           

          三 Process类的使用

          创建并开启子进程的方式一

          Process 传字典 或者args 传参数?#37096;?#20197;

           

          start()开启子进程

          from multiprocessing import Process
          import time
          
          def task(name):
          
          
              print("%s is running" % name)
              time.sleep(3)
              print("%s is done" % name)
          
          
          if __name__ == "__main__":
          
              # 实例化
              # args 为函数传参数
              t = Process(target=task, args=("子进程1",))
              # 开启子进程
              t.start()   # 仅仅只是给操作系统发送一个信号 与平常print没有什么区别
          
              print("")
          
          
          ‘‘‘
          主
          子进程1 is running
          子进程1 is done
          ‘‘‘
          
          ‘‘‘
          看得出是先打印主 再开启子进程1的
          ‘‘‘

           

           用关键字参数kwargs传参

          from multiprocessing import Process
          import time
          
          def task(name):
          
          
              print("%s is running" % name)
              time.sleep(3)
              print("%s is done" % name)
          
          
          if __name__ == "__main__":
          
              # 实例化
              # ?#37096;?#20197;用kwargs 为函数传参数 以字典方式
              t = Process(target=task, kwargs={name: 子进程1})
              t.start()
          
          ‘‘‘
          子进程1 is running
          子进程1 is done
          ‘‘‘

           

          应用程序是开不了子进程的 p.start() 给操作系统发送信号 至于操作系统什么时候开进程,开多长时间应用程序?#24378;?#21046;不了。

           p.start() 给操作系统发送信号 告诉操作系统给个开个子进程吧  操作系统收到后 申请内存空间 把父进程的地址空间数据 拷贝给子进程

           作为子进程的初始状态

           

          父进程不知道操作系统会

           

           

          默认是先 开启主进程执行,主进程执行完,再开启 子进程执行,再到子进程执行结束。

           

          创建并开启子进程的方式二

           

          自己写一个子类去继承他 不用默认的类

          方法一定要写run

           

           

          from multiprocessing import Process
          import time
          
          
          # 自己写一个子类去继承他 不用默认的类
          # Process的类传进去
          
          class MyProcess(Process):
          
              # 重写了init方法 父类就被覆盖掉
              def __init__(self, name):
          
          
                  # 重用父类 因为父类还有很多有用功能,继承父类
                  super().__init__()
                  self.name = name
          
              # 方法一定要写run
              def run(self):
                  print("%s is running" % self.name)
                  time.sleep(3)
                  print("%s is done" % self.name)
          
          if __name__ == "__main__":
          
              # 实例化 直接用自己自定义的类开子进程
              # args 为函数传参数
              p = MyProcess("子进程1")
              # 开启子进程
              p.start()   # 仅仅只是给操作系统发送一个信号 与平常print没有什么区别
          
              # p.start() 本质是调用run方法
              print("")

           

          python 开启进程两种方法 multiprocessing模块 介绍

          标签:cti   pip   拷贝   section   模块   process类   资源   python   style   

          原文:https://www.cnblogs.com/mingerlcm/p/8986623.html

          (0)
          (0)
             
          举报
          评论 一句话评论(0
          登录后才能评论!
          ? 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
          打开技术之扣,分享程序人生!
                       

          鲁公网安备 37021202000002号

          t6娱乐平台官方
          <blockquote id="shwb3"><ruby id="shwb3"></ruby></blockquote>
        2. <small id="shwb3"><strong id="shwb3"></strong></small>

            1. <big id="shwb3"></big>
              1. <blockquote id="shwb3"><ruby id="shwb3"></ruby></blockquote>
              2. <small id="shwb3"><strong id="shwb3"></strong></small>

                  1. <big id="shwb3"></big>