Python_多进程_pool进程池

Posted hellangels333

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python_多进程_pool进程池相关的知识,希望对你有一定的参考价值。

多进程典型案例:

 

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进程池的主要内容,如果未能解决你的问题,请参考以下文章

python 归纳 (十五)_多进程使用Pool

python_并发编程——进程池

0704 Process继承实现多进程Pool进程池,及Pool实现多进程实现复制文件

Python 进程池 pool

python进程之间修改数据[Manager]与进程池[Pool]

具有不同功能的多进程池