• 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()
  • 相关阅读:
    json to dictionary
    ie下 频繁异步加载导致崩溃
    如何实现数据在表内部置顶
    js货币转换,replaceAll写法
    js奇怪的问题
    mssql中public和db_owner权限下拿到webshell或者系统权限
    关于Alexa Toolbar的破解方法
    如何备份和还原 IIS
    WIN下IIS备份与恢复操作
    汽车品牌标志数据库
  • 原文地址:https://www.cnblogs.com/Fantinai/p/8428550.html
Copyright © 2020-2023  润新知