zoukankan      html  css  js  c++  java
  • Python 多进程编程之multiprocessing--Process

    Python 多进程编程之multiprocessing

    1,Process

    • 跨平台的进程创建模块(multiprocessing), 支持跨平台:windowx/linux
    • 创建和启动
            创建格式:p=Process(target=函数名)
      ----def __init__(self, group=None, target=None, name=None, args=(), kwargs={}):
      group:分组(基本不用)
      target:表示这个进程实例所调用的对象.
      name:给进程起一个别名
      args:参数,表示调用对象的位置参数元组
      kwargs:表示调用对象的关键字参数字典

      注意:target后是函数名,一定要记住,是函数名,没有括号
      带括号的话,子进程就没有创建,直接在主进程执行了
            启动:p.start()

    • ----在主进程等待指令之前加入     p.join()
      这个命令叫做"阻塞",意思是让主进程
      等待子进程结束之后,再执行join()之后的语句
      ----可以设置等待子进程时间    p.join(4)
      设置时间之后,主进程的阻塞时间只有4秒
    • 进程对象.is_alive()
      检测进程是否活着
      ----会有2个返回值
      True:活着
      False:死了
    • 进程对象.terminate()
      ----不管进程是否结束,
      强制终止进程
    • 实例:从键盘输入一个整数,分别开启两个进程来计算这个数的累加和和阶乘。
      (第一个进程用系统提供给我们的类,第二个进程需要自己定义)
    • from multiprocessing import Process
      
      #方法1:
      def sumToN(n):
          s = 0
          for i in range(1,n+1):
              s += i
          print("累加和:%d"%s)
      
      #方法2:
      class JieCheng(Process):
          def __init__(self,n):
              Process.__init__(self)
              self.n = n
      
          def run(self):
              j = 1
              for i in range(1, self.n + 1):
                  j *= i
              print("%d!=%d"%(self.n, j))
      
      if __name__ == "__main__":
          #输入一个数:
          str_num = input("请输入一个数:")
          num = int(str_num)
      
          #创建进程--计算
      #方法1: 系统提供给我们的类
      p1 = Process(target=sumToN,args=(num,))
      p1.start()

      #方法2:自己定义的类,也叫继承系统类 p2 = JieCheng(num) p2.start()
  • 相关阅读:
    告诉你,Spring Boot 真是个牛逼货!
    poj 1274 The Perfect Stall(二分图匹配)
    poj 2010 Moo University
    poj 2407 Relatives(简单欧拉函数)
    poj 2046 Gap(bfs+hash)
    poj 1703 Find them, Catch them(并查集)
    hdu 5424 Rikka with Graph II(dfs+哈密顿路径)
    hdu 5422 Rikka with Graph(简单题)
    hdu 5423 Rikka with Tree(dfs)
    zoj 3811 Untrusted Patrol(bfs或dfs)
  • 原文地址:https://www.cnblogs.com/Fantinai/p/8428550.html
Copyright © 2011-2022 走看看