博客
关于我
Python 多处理 apply_async 永远不会在 Windows 7 上返回结果
阅读量:805 次
发布时间:2023-03-07

本文共 1065 字,大约阅读时间需要 3 分钟。

在Windows 7上使用Python的多处理库apply_async方法时,可能会遇到无法得到结果的问题。以下是可能的原因及解决方法:

  • 版本兼容性:

    • 确保你的Python版本和multiprocessing库的版本是兼容的。不同的版本可能会导致不兼容问题。
    • 检查并更新Python和multiprocessing库的版本,确保它们是最新且兼容的。
  • 任务执行时间太短:

    • 如果任务执行时间非常短,可能在append future到结果列表时,任务结果尚未完成,导致后续无法获取到结果。
    • 检查任务函数的执行时间,确保任务足够时间完成。
  • 使用multiprocessing.Pool而不是Process:

    • 在Windows 7上,multiprocessing.Pool通常比multiprocessing.Process更高效。
    • 尝试替换现有的Process为Pool,看看是否能解决问题。
  • 任务函数需要有返回值:

    • apply_async的返回结果是任务函数的返回值的Future对象,确保任务函数有明确的返回值。
    • 检查任务函数是否返回了正确的值,并确保返回值可被正确获取。
  • 以下是一个使用multiprocessing.Pool的示例代码:

    from multiprocessing import Pooldef myTask(n):    print("Starting task with value:", n)    return n * nif __name__ == "__main__":    with Pool(processes=4) as p:        results = []        for i in range(10):            future = p.apply_async(myTask, args=(i,))            results.append(future)        # 等待所有任务完成        for future in results:            print("Result from task:", future.get())

    注意:apply_async的get方法会阻塞直到结果可用。如果需要在其他操作中同时进行,可以使用apply_async的wait方法来等待结果可用,然后调用get方法获取结果。

    通过以上步骤,应该能够解决在Windows 7上使用Python多处理apply_async方法时无法得到结果的问题。

    转载地址:http://anofk.baihongyu.com/

    你可能感兴趣的文章
    Python3爬虫数据入数据库---把爬取到的数据存到数据库,带数据库去重功能
    查看>>
    python3的 pymysql把mysqldb库取代了,让python 3支持mysqldb的解决方法
    查看>>
    Python3笔记——IDE的选择
    查看>>
    python3简单使用requests 用户代理,cookie池
    查看>>
    Python3组播通信编程实现教程(发送者+接收者)
    查看>>
    Python3编写网络爬虫10-数据存储方式三-CSV文件存储
    查看>>
    python3读取redis返回数据带有'b'的问题
    查看>>
    Python3连接MySQL
    查看>>
    Python关于isinstance函数的解析 | 附Demo(全)
    查看>>
    Python3:setup.py:完成所有任务的PIP安装(Build_ext+Install)
    查看>>
    python4.0 gil_Python 并发编程系列--1、浅谈GIL历史及对多线程的影响
    查看>>
    python60行绘图程序_天底下最简单的QT画图板,就一个类,60行代码
    查看>>
    Python: AES加密与解密
    查看>>
    Python: Range() 最大尺寸;动态的还是静态的?
    查看>>
    Python: Windows下用 multiprocessing 的深坑
    查看>>
    python:Could not find platform independent libraries <prefix>解决方法
    查看>>
    Python:datetime tzinfo 时区名称文档
    查看>>
    Python:deepcopy(list) vs new_list = old_list[:]
    查看>>
    Python:Google API - 从消息中获取 mimeTypes
    查看>>
    Python:Google API - 从消息中获取 mimeTypes
    查看>>