葫芦金刚

导航

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()

     

posted on 2018-02-07 21:45  葫芦金刚  阅读(328)  评论(0编辑  收藏  举报