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 splitlines使用技巧

    Python splitlines使用技巧

    Python中的splitlines用来分割行。当传入的参数为True时,表示保留换行符 \n。通过下面的例子就很明白了
    2008-09-09
  • python使用TensorFlow进行图像处理的方法

    python使用TensorFlow进行图像处理的方法

    本篇文章主要介绍了使用TensorFlow进行图像处理的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 使用python获取PDF页面的大小、方向和旋转角度

    使用python获取PDF页面的大小、方向和旋转角度

    在文档管理和自动化领域,了解PDF文档的内在属性(如页面大小、方向和旋转角度)对于确保一致的文档处理和布局保真度至关重要,因为它们直接影响文档的可读性和用户体验,本文将展示如何使用Python代码获取PDF文档中页面的大小、方向和旋转角度,需要的朋友可以参考下
    2024-09-09
  • Python爬虫之UserAgent的使用实例

    Python爬虫之UserAgent的使用实例

    今天小编就为大家分享一篇关于Python爬虫之UserAgent的使用实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 使用Python开发Telegram Bot的流程步骤

    使用Python开发Telegram Bot的流程步骤

    Telegram Bot 是一种可以与用户交互的机器人应用程序,通过 Telegram 的 Bot API 与服务器通信,它可以用来处理消息、执行命令、提供服务,如通知提醒、数据查询和自动化任务等,本文给大家介绍了如何用 Python 开发一个 Telegram Bot,需要的朋友可以参考下
    2025-01-01
  • Python读取配置文件的实战操作

    Python读取配置文件的实战操作

    python代码中配置文件是必不可少的内容,常见的配置文件格式有很多中,ini、yaml、xml、properties、txt、py等,下面这篇文章主要给大家介绍了关于Python读取配置文件的相关资料,需要的朋友可以参考下
    2023-04-04
  • Python报错:NameError: name ‘xxx‘ is not defined的解决办法

    Python报错:NameError: name ‘xxx‘ is not defined的解决办法

    这篇文章主要给大家介绍了关于Python报错:NameError: name ‘xxx‘ is not defined的解决办法,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-06-06
  • Python实现批量图片的切割

    Python实现批量图片的切割

    本文主要介绍了Python实现批量图片的切割,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • python 爬虫如何正确的使用cookie

    python 爬虫如何正确的使用cookie

    这篇文章主要介绍了python 爬虫如何使用cookie,帮助大家绕过网站设置的登录规则以及登录时的验证码识别,完成自身的爬取需求,感兴趣的朋友可以了解下
    2020-10-10
  • python框架django项目部署相关知识详解

    python框架django项目部署相关知识详解

    这篇文章主要介绍了python框架django项目部署相关知识详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论