python Pool常用函数用法总结

Posted 梦子mengy7762

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python Pool常用函数用法总结相关的知识,希望对你有一定的参考价值。

在本篇内容里小编给大家整理的是一篇关于python Pool常用函数用法总结内容,有需要的朋友们可以学习下。

1、说明

apply_async(func[,args[,kwds]):使用非堵塞调用func(并行执行,堵塞方式必须等待上一个过程退出才能执行下一个过程),args是传输给func的参数列表,kwds是传输给func的关键词参数列表。

close():关闭Pool,使之不再接受新任务。

terminate():无论任务是否完成,都要立即终止。

join():主进程堵塞,等待子进程退出,必须在close或terminate之后使用。

2、实例

|

#coding: utf-8

import multiprocessing

import time

def func(msg):

print``(``"msg:"``, msg)

time.sleep(``3``)

print``(``"end"``)

if __name__ =``= "__main__"``:

cores = multiprocessing.cpu_count()

pool = multiprocessing.Pool(processes``=``cores)

print``(``"Adding tasks..."``)

for i in range``(cores):

msg = "hello %d" %``(i)

pool.apply_async(func, (msg, )) #维持执行的进程总数为processes,当一个进程执行完毕后会添加新的进程进去

print``(``"Starting tasks..."``)

pool.close()

pool.join() #调用join之前,先调用close函数,否则会出错。执行完close后不会有新的进程加入到pool,join函数等待所有子进程结束

print``(``"Sub-process(es) done."``)

|

实例扩展:

# -*- coding:utf-8 -*-

from multiprocessing import Pool

import os, time, random

def worker(msg):

t_start = time.time()

print``(``"%s开始执行,进程号为%d" % (msg,os.getpid()))

# random.random()随机生成0~1之间的浮点数

time.sleep(random.random()``*``2``)

t_stop = time.time()

print``(msg,``"执行完毕,耗时%0.2f" % (t_stop``-``t_start))

po = Pool(``3``) # 定义一个进程池,最大进程数3

for i in range``(``0``,``10``):

# Pool().apply_async(要调用的目标,(传递给目标的参数元祖,))

# 每次循环将会用空闲出来的子进程去调用目标

po.apply_async(worker,(i,))

print``(``"----start----"``)

po.close() # 关闭进程池,关闭后po不再接收新的请求

po.join() # 等待po中所有子进程执行完成,必须放在close语句之后

print``(``"-----end-----"``)

|

运行结果

----start----
0开始执行,进程号为21466
1开始执行,进程号为21468
2开始执行,进程号为21467
0 执行完毕,耗时1.01
3开始执行,进程号为21466
2 执行完毕,耗时1.24
4开始执行,进程号为21467
3 执行完毕,耗时0.56
5开始执行,进程号为21466
1 执行完毕,耗时1.68
6开始执行,进程号为21468
4 执行完毕,耗时0.67
7开始执行,进程号为21467
5 执行完毕,耗时0.83
8开始执行,进程号为21466
6 执行完毕,耗时0.75
9开始执行,进程号为21468
7 执行完毕,耗时1.03
8 执行完毕,耗时1.05
9 执行完毕,耗时1.69
-----end-----

到此这篇关于python Pool常用函数用法总结的文章就介绍到这了,更多相关python Pool常用函数有哪些内容请搜索python教程入门学习以前的文章或继续浏览下面的相关文章希望大家以后多多支持python教程入门学习!
python福利教程领取方式:
1、点赞+评论(勾选“同时转发”)
2、关注小编。并私信回复关键字【19】
(一定要私信哦~点击我的头像就能看到私信按钮了)

以上是关于python Pool常用函数用法总结的主要内容,如果未能解决你的问题,请参考以下文章

python常用代码片段总结

python中常用内置函数用法总结

python调试:pdb基本用法(转)

Java习惯用法总结

python基础总结

python中的一些用法总结