zoukankan      html  css  js  c++  java
  • multiprocessing多进程(31-04)创建进程的两种方式

    一个进程可以寄生多个线程。

    CPU核数与进程个数是统一的,

    若进程多于核数,那么只有等待上一进程执行完才能被执行。

    ------------------第一种进程创建方式------------------------

    from multiprocessing import Process
    import time  

    def A(name):
      time.sleep(1)
      print('haello', name, time.ctime())

    if __name__ == "__main__":
      p_list = []
      for i in range(3):    # 创建三个进程
        P = Process(target=A, args=('kay'))
        p_list.append(p)
        p.start()    # 准备进程,让CPU执行
      for p in p_list:
        p.join()  # 阻塞住,所以进程执行完才执行下面代码
      print('end')


     运行结果:

    hello kay Wed Sep 19 10:18:00 2018
    hello kay Wed Sep 19 10:18:00 2018
    hello kay Wed Sep 19 10:18:00 2018
    end

    ---------------------------第二种进程创建方式(类式调用)---------------------------------------

    from multiprocessing import Process
    class MyProcess(Process):    # 继承Process方法
      def __init__(self, name):
        super(MyProcess, self).__init__()  # 执行子类的__init__方法
        self.name = name        # 防止执行父类中的方法
      def run(self):
        time.sleep(1)
        print('hello', self.name, time.ctime())

    if __name__ == "__main__":

       p_list = []

       for i in range(3):

          p = MyProcess('kay')

          p.start()

          p_list.append(p)

       for p in p_list:

          p.join()  # 阻塞住

        print('end')

        

    运行结果:

    hello kay Wed Sep 19 11:38:40 2018
    hello kay Wed Sep 19 11:38:40 2018
    hello kay Wed Sep 19 11:38:40 2018
    end

    在父类中也有封装name,如果不重新封装,会默认执行父类封装好的,而父类封装好的name是显示当前进程号。

  • 相关阅读:
    解决spring配置文件没有提示的问题
    SpringMVC 中HttpMessageConverter简介和Http请求415 Unsupported Media Type的问题
    在编辑Spring的配置文件时的自动提示
    Java注释@interface的用法【转】
    spring-autowire机制
    一些汇编指令
    Windows底层开发前期学习准备工作
    log4j.properties中的这句话“log4j.logger.org.hibernate.SQL=DEBUG ”该怎么写在log4j.xml里面呢?
    log4j 配置文件 (XML/.properties)
    [VC]C++ operator 两种用法
  • 原文地址:https://www.cnblogs.com/uncle-kay/p/9673828.html
Copyright © 2011-2022 走看看