python多进程并发的实现示例

 更新时间:2024年02月11日 09:40:24   作者:深度学习界扛把子  
python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程,本文主要介绍了python多进程并发的实现示例,感兴趣的可以了解一下

虚假的并发,当你调用future.result()时,它会阻塞当前线程,直到任务完成并返回结果。因此,当你在循环中调用future.result()时,程序会按顺序执行任务,而不是并发执行。

import concurrent.futures
import time

# 创建一个进程池
process_pool = concurrent.futures.ProcessPoolExecutor(max_workers=8)

# 定义任务函数
def task_function(task_id):
    print(f"Task {task_id} started")
    # 执行任务的逻辑
    time.sleep(1)
    print(f"Task {task_id} completed")
    return 1
# 提交任务到进程池
def submit_task(task_id):
    future = process_pool.submit(task_function, task_id)
    return future

# 示例任务列表
task_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = []
# 提交任务到进程池,并等待任务完成
futures = []
t1 =time.time()
for task_id in task_list:
    future = submit_task(task_id)
    futures.append(future)
    # result.append(future.result())
# 等待进程池中的任务完成
concurrent.futures.wait(futures)
# 关闭进程池
t2 = time.time()
print(t2-t1,"s")
process_pool.shutdown()
print(result)

如果你想要实现并发执行任务,并且在所有任务完成后获取结果,可以使用concurrent.futures.as_completed()方法来实现。这个方法返回一个迭代器,可以按照任务完成的顺序获取结果。

import concurrent.futures
import time

# 创建一个进程池
process_pool = concurrent.futures.ProcessPoolExecutor(max_workers=8)

# 定义任务函数
def task_function(task_id):
    print(f"Task {task_id} started")
    # 执行任务的逻辑
    time.sleep(1)
    print(f"Task {task_id} completed")
    return task_id

# 提交任务到进程池
def submit_task(task_id):
    future = process_pool.submit(task_function, task_id)
    return future

# 示例任务列表
task_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = []

# 提交任务到进程池,并等待任务完成
futures = []
t1 = time.time()
for task_id in task_list:
    future = submit_task(task_id)
    futures.append(future)

# 获取任务结果
for future in concurrent.futures.as_completed(futures):
    result.append(future.result())

t2 = time.time()
print(t2 - t1, "s")
print(result)

# 关闭进程池
process_pool.shutdown()

到此这篇关于python多进程并发的实现示例的文章就介绍到这了,更多相关python多进程并发内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python使用latexify模块实现将代码为数学公式

    Python使用latexify模块实现将代码为数学公式

    latexify 是一个轻量级的 Python 模块,可以将 Python 代码转换为 LaTeX 格式的数学表达式,这篇文章就来和大家探索一下如何使用latexify模块实现将代码为数学公式吧
    2023-12-12
  • 详解 Python中LEGB和闭包及装饰器

    详解 Python中LEGB和闭包及装饰器

    这篇文章主要介绍了详解 Python中LEGB和闭包及装饰器的相关资料,主要介绍了函数作用域和闭包的理解和使用方法及Python中的装饰器,需要的朋友可以参考下
    2017-08-08
  • Python txt文件加入字典并查询的方法

    Python txt文件加入字典并查询的方法

    今天小编就为大家分享一篇Python txt文件加入字典并查询的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python图像锐化与边缘检测之Sobel与Laplacian算子详解

    Python图像锐化与边缘检测之Sobel与Laplacian算子详解

    图像锐化和边缘检测主要包括一阶微分锐化和二阶微分锐化,本文主要讲解常见的图像锐化和边缘检测方法,即Sobel算子和Laplacian算子,感兴趣的可以了解一下
    2022-12-12
  • python求最大值最小值方法总结

    python求最大值最小值方法总结

    在本篇内容里小编给大家分享了关于python求最大值最小值方法以及实例内容,有兴趣的朋友们学习下。
    2019-06-06
  • Python多线程与多处理之间的区别详解

    Python多线程与多处理之间的区别详解

    在本文中,我们将学习 Python 中多线程和多处理的内容、原因和方式,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • python实现PID算法及测试的例子

    python实现PID算法及测试的例子

    今天小编就为大家分享一篇python实现PID算法及测试的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python利用TextBlob库实现轻松分析文本情感

    python利用TextBlob库实现轻松分析文本情感

    TextBlob是一个基于NLTK(Natural Language Toolkit)和Pattern库的Python库,它提供了一系列方便的接口和方法来处理文本数据,下面我们就来学习一下如何利用TextBlob库实现轻松分析文本情感吧
    2023-12-12
  • python实现字符串逆序输出的几种方法

    python实现字符串逆序输出的几种方法

    本文介绍了四种在Python中实现字符串逆序输出的方法,每种方法都有其优缺点,下面就来介绍一下如何使用,感兴趣的可以了解一下
    2024-12-12
  • 编写Python小程序来统计测试脚本的关键字

    编写Python小程序来统计测试脚本的关键字

    这篇文章主要介绍了编写Python小程序来统计测试脚本的关键字的方法,文中的实例不仅可以统计关键字数量,还可以按主关键字来归类,需要的朋友可以参考下
    2016-03-03

最新评论