• 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是显示当前进程号。

  • 相关阅读:
    ES之2:海量数据处理之倒排索引
    架构-伸缩性
    ES之3:elasticsearch优化收集
    架构-扩展性
    关于静态方法与非静态方法的执行效率
    架构师
    拖库 洗库 撞库
    SOA架构设计经验分享—架构、职责、数据一致性
    mysql索引之五:多列索引
    mysql索引之四:复合索引之最左前缀原理,索引选择性,索引优化策略之前缀索引
  • 原文地址:https://www.cnblogs.com/uncle-kay/p/9673828.html
Copyright © 2020-2023  润新知