python Pool常用函数用法总结

 更新时间:2021年04月19日 08:38:58   作者:小妮浅浅  
在本篇内容里小编给大家整理的是一篇关于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学习笔记之os模块使用总结

    Python学习笔记之os模块使用总结

    这篇文章主要介绍了Python学习笔记之os模块使用总结,本文总结了多个常用方法,需要的朋友可以参考下
    2014-11-11
  • 对pandas处理json数据的方法详解

    对pandas处理json数据的方法详解

    今天小编就为大家分享一篇对pandas处理json数据的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 关于Python中两个不同shape的数组间运算规则

    关于Python中两个不同shape的数组间运算规则

    这篇文章主要介绍了关于Python中两个不同shape的数组间运算规则,众所周知,相同 shape 的两个数组间运算是指两个数组的对应元素相加,我们经常会碰到一些不同 shape 的数组间运算,需要的朋友可以参考下
    2023-08-08
  • 一文详解python如何将编写的模块打包上传至pypi

    一文详解python如何将编写的模块打包上传至pypi

    我们此前花了很大功夫写了一个极其简单的web框架myWeb,想要给别人用的时候,需要让别人拷贝源代码才行,这太low了,所以本篇文章会介绍如何将自己写的模块打包上传至pypi,以便让需要的人通过pip进行安装,感兴趣的同学可以参考阅读
    2023-05-05
  • Biblibili视频投稿接口分析并以Python实现自动投稿功能

    Biblibili视频投稿接口分析并以Python实现自动投稿功能

    这篇文章主要介绍了Biblibili视频投稿接口分析并以Python实现自动投稿功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 详解Python 3.10 中的新功能和变化

    详解Python 3.10 中的新功能和变化

    这篇文章主要介绍了详解Python 3.10 中的新功能和变化,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • Python itertools库中product函数使用实例探究

    Python itertools库中product函数使用实例探究

    这篇文章主要为大家介绍了Python itertools库中product函数使用实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 基python实现多线程网页爬虫

    基python实现多线程网页爬虫

    python是支持多线程的, 主要是通过thread和threading这两个模块来实现的,本文主要给大家分享python实现多线程网页爬虫,需要的朋友可以参考下
    2015-09-09
  • set在python里的含义和用法

    set在python里的含义和用法

    在本篇内容中我们给大家整理了关于set在python里的用法含义等相关知识点内容,有兴趣的朋友们可以学习下。
    2019-06-06
  • Django框架HttpResponse对象用法实例分析

    Django框架HttpResponse对象用法实例分析

    这篇文章主要介绍了Django框架HttpResponse对象用法,结合实例形式分析了Django框架HttpResponse对象基本原理、功能及响应请求的相关操作技巧,需要的朋友可以参考下
    2019-11-11

最新评论