python多进程使用apply_async的使用方法详解

 更新时间:2022年09月15日 15:38:09   作者:IT之一小佬  
这篇文章主要介绍了python多进程使用apply_async使用方法详解,apply_async是异步非阻塞式,不用等待当前进程执行完毕,随时跟进操作系统调度来进行进程切换,即多个进程并行执行,提高程序的执行效率

前言:

python在同一个线程中多次执行同一方法时,该方法执行耗时较长且每次执行过程及结果互不影响,如果只在主进程中执行,效率会很低,因此使用multiprocessing.Pool(processes=n)及其apply_async()方法提高程序执行的并行度从而提高程序的执行效率,其中processes=n为程序并行执行的进程数。

 apply_async是异步非阻塞式,不用等待当前进程执行完毕,随时跟进操作系统调度来进行进程切换,即多个进程并行执行,提高程序的执行效率。

示例代码1:

import time
import random
import multiprocessing
 
def func(x):
    ts = random.randint(1, 10)
    time.sleep(ts)
    print(f'{x}执行完毕!耗时{ts}s')
 
if __name__ == '__main__':
    pool = multiprocessing.Pool(6)
    for i in range(6):
        print(f"开始执行第{i}个任务...")
        pool.apply_async(func, args=(i, ))
    pool.close()
    pool.join()

运行结果:

在使用apply_async()方法接收多个参数的方法时,在任务方法中正常定义多个参数,参数以元组形式传入即可 但是给apply_async()方法传入多个值获取多个迭代结果时就会报错,因为该方法只能接收一个值,所以可以将该方法放入一个列表生成式中。

示例代码2:

import multiprocessing
 
def func(x):
    return x ** 2
 
if __name__ == '__main__':
    pool = multiprocessing.Pool()
    res = [pool.apply_async(func, (i, )) for i in range(6)]
    print([x for x in res])
    print([x.get() for x in res])
    pool.close()
    pool.join()

运行结果:

注意:join()等待所有子进程结束后再运行,使用join()前先使用close()关闭它。

到此这篇关于python多进程使用apply_async使用方法详解的文章就介绍到这了,更多相关python apply_async 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python使用textract实现从各种文件中提取文本信息

    Python使用textract实现从各种文件中提取文本信息

    textract是一个强大的Python库,可以用于从各种文件格式中提取文本,本文将介绍textract的使用场景,以及一些常用的Python代码案例,希望对大家有所帮助
    2024-01-01
  • Python爬虫实现HTTP网络请求多种实现方式

    Python爬虫实现HTTP网络请求多种实现方式

    这篇文章主要介绍了Python爬虫实现HTTP网络请求多种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 利用pyinstaller打包exe文件的基本教程

    利用pyinstaller打包exe文件的基本教程

    这篇文章主要给大家介绍了关于利用pyinstaller打包exe文件的基本方法,文中通过示例代码介绍的非常详细,对大家学习或者使用pyinstaller具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Python+Matplotlib绘制小提琴图的示例代码

    Python+Matplotlib绘制小提琴图的示例代码

    小提琴图 (Violin Plot) 类似纺锤,是一种用来显示数据分布和概率密度的图形,本文为大家介绍了Matplotlib绘制小提琴图的函数源码,需要的可以参考一下
    2023-06-06
  • Python ORM框架SQLAlchemy学习笔记之数据查询实例

    Python ORM框架SQLAlchemy学习笔记之数据查询实例

    这篇文章主要介绍了Python ORM框架SQLAlchemy学习笔记之数据查询实例,需要的朋友可以参考下
    2014-06-06
  • 通过实例了解Python异常处理机制底层实现

    通过实例了解Python异常处理机制底层实现

    这篇文章主要介绍了通过实例了解Python异常处理机制底层实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • TensorFlow索引与切片的实现方法

    TensorFlow索引与切片的实现方法

    这篇文章主要介绍了TensorFlow索引与切片的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Python数据可视化之matplotlib.pyplot绘图的基本参数详解

    Python数据可视化之matplotlib.pyplot绘图的基本参数详解

    matplotlib.pyplot模块是一个功能强大的画图模块,可以对画图的多个参数进行调整,下面这篇文章主要给大家介绍了关于Python数据可视化之matplotlib.pyplot绘图基本参数的相关资料,需要的朋友可以参考下
    2022-04-04
  • Tensorflow设置显存自适应,显存比例的操作

    Tensorflow设置显存自适应,显存比例的操作

    今天小编就为大家分享一篇Tensorflow设置显存自适应,显存比例的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python opencv3实现人脸识别(windows)

    python opencv3实现人脸识别(windows)

    这篇文章主要为大家详细介绍了python opencv3实现人脸识别程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05

最新评论