码迷,mamicode.com
首页 > 编程语言 > 详细

Python_多进程_pool进程池

时间:2018-01-02 19:52:25      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:style   进程池   blog   color   roc   ssi   def   proc   异步   

多进程典型案例:

 

1、将子进程的进程名作为列表中的元素,在父进程中遍历(异步)执行

#coding: utf-8
from multiprocessing import Pool
import os, time, random
#将函数打包成列表中的元素,再(异步)遍历执行

def zhangsan():
    print ("\nRun task 张三-%s" %(os.getpid())) #os.getpid()获取当前的进程的ID
    start = time.time()
    time.sleep(random.random() * 10) #random.random()随机生成0-1之间的小数
    end = time.time()
    print (Task 张三 runs %0.2f seconds. %(end - start))

def lisi():
    print ("\nRun task 李四-%s" %(os.getpid()))
    start = time.time()
    time.sleep(random.random() * 40)
    end=time.time()
    print (Task 李四 runs %0.2f seconds. %(end - start))

def wangwu():
    print ("\nRun task 王五-%s" %(os.getpid()))
    start = time.time()
    time.sleep(random.random() * 30)
    end = time.time()
    print (Task 王五 runs %0.2f seconds. %(end - start))

def zhaoliu():
    print ("\nRun task 赵六-%s" %(os.getpid()))
    start = time.time()
    time.sleep(random.random() * 20)
    end = time.time()
    print (Task 赵六 runs %0.2f seconds. %(end - start))
        
if __name__==__main__:
    function_list=  [zhangsan, lisi, wangwu, zhaoliu] 
    print ("parent process %s" %(os.getpid()))

    pool=Pool(4)
    for func in function_list:
        pool.apply_async(func)     #Pool执行函数,apply执行函数,当有一个进程执行完毕后,会添加一个新的进程到pool中

    print (等待所有子进程执行……)
    pool.close()
    ‘‘‘
    调用join之前,一定要先调用close() 函数,否则会出错,
    close()执行后不会有新的进程加入到pool,join函数等待素有子进程结束
    ‘‘‘
    pool.join()    
    print (子进程执行完毕)

 

Python_多进程_pool进程池

标签:style   进程池   blog   color   roc   ssi   def   proc   异步   

原文地址:https://www.cnblogs.com/hellangels333/p/8178568.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!