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

  • 相关阅读:
    springboot项目引入通用mapper(tk.mybatis.mapper)的时候一些可能会踩的坑
    Zookeeper和Dubbo基本配置和调用
    Zookeeper和Dubbo介绍
    Git的基础命令大全,拉取推送,分支,合并,冲突
    Maven内置tomcat
    Maven高级,依赖传递和解决冲突,版本锁定,提取统一版本号
    SpringMvc的自定义异常,交给SpringMvc管理
    IDEA创建MavenWeb项目慢,问题根除
    Docker安装指南
    Docker容器入门
  • 原文地址:https://www.cnblogs.com/uncle-kay/p/9673828.html
Copyright © 2020-2023  润新知