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 wordcloud库安装方法总结

    Python wordcloud库安装方法总结

    在本篇文章里小编给大家整理的是一篇关于Python wordcloud库安装方法总结内容,有需要的朋友们可以学习下。
    2020-12-12
  • Python自动抢红包教程详解

    Python自动抢红包教程详解

    在本篇文章里小编给大家整理了关于Python自动抢红包的相关知识点内容,有兴趣的朋友们参考学习下。
    2019-06-06
  • Python之列表推导式最全汇总(上篇)

    Python之列表推导式最全汇总(上篇)

    这篇文章主要介绍了Python之列表推导式最全汇总(上篇),本文章内容详细,通过案例可以更好的理解列表推导式的相关知识,本模块分为了三部分,本次为上篇,需要的朋友可以参考下
    2023-01-01
  • python编程PyAutoGUI库使用与安装简介

    python编程PyAutoGUI库使用与安装简介

    这篇文章主要为大家介绍了python编程中PyAutoGUI库的使用与安装简单介绍,文中含有视频详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • Python实现代码块儿折叠

    Python实现代码块儿折叠

    这篇文章主要介绍了Python实现代码块儿折叠方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python小白练习题之条件控制与循环控制

    python小白练习题之条件控制与循环控制

    Python 中的条件控制和循环语句都非常简单,也非常容易理解,与其他编程语言类似,下面这篇文章主要给大家介绍了关于python小白练习题之条件控制与循环控制的相关资料,需要的朋友可以参考下
    2021-10-10
  • Python判断两个文件是否相同与两个文本进行相同项筛选的方法

    Python判断两个文件是否相同与两个文本进行相同项筛选的方法

    今天小编就为大家分享一篇关于Python判断两个文件是否相同与两个文本进行相同项筛选的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 一文带你了解Python中的延迟绑定

    一文带你了解Python中的延迟绑定

    Python中的延迟绑定是指在嵌套函数中,内部函数在被调用时才会绑定外部函数的变量,而不是在定义内部函数时就绑定。本文将通过一些例子带大家深入了解Python中的延迟绑定,感兴趣的可以了解一下
    2023-05-05
  • PyTorch Autograd的核心原理和功能深入探究

    PyTorch Autograd的核心原理和功能深入探究

    本文深入探讨了PyTorch中Autograd的核心原理和功能,从基本概念、Tensor与Autograd的交互,到计算图的构建和管理,再到反向传播和梯度计算的细节,最后涵盖了Autograd的高级特性
    2024-01-01
  • python如何去除字符串中不想要的字符

    python如何去除字符串中不想要的字符

    这篇文章主要为大家详细介绍了python如何去除字符串中不想要的字符,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03

最新评论