【问题标题】:python mutiprocessing.pool.imap() alternativespython multiprocessing.pool.imap() 替代品
【发布时间】:2014-05-17 23:31:53
【问题描述】:

我在使用池时遇到了问题,所以我需要用一些替代方法来改变它。

我尝试joblib.Parallel,但它的工作方式更类似于map,而不是imap,但我希望获得像迭代器一样的结果,并且能够在第一个可用的结果时立即开始处理,而不是等待其他人完成.

【问题讨论】:

    标签: python multithreading python-2.7 multiprocessing jobs


    【解决方案1】:

    您可以将pool.apply_async 与回调函数一起使用,该函数将在每个回调函数完成时调用。

    回调只能接受一个参数,所以如果你的函数返回不止一个东西,你的回调函数需要意识到这一点并解包参数(它将接收一个参数,一个元组,包含返回值函数。)

    例子:

    from multiprocessing import Pool
    import time
    
    
    def f(x):
        time.sleep(1/(x * 100))
        return x**2
    
    def callback(value):
        print(value)
    
    # in Python 3.3 you can use a context manager with the pool.
    pool = Pool(3)
    for value in range(10):
        pool.apply_async(f, (value,), callback=callback)
    pool.close()
    pool.join()
    

    【讨论】:

    • pool 我的系统有问题,所以我不能使用它。并寻找可以替代的东西。
    • 你的系统是什么?您确定是因为游泳池不工作,还是其他原因?
    • 我很确定这是一个池问题。系统 - Ubuntu 12.04
    • 我正在使用 Cinnamon Mint,它运行良好……您使用的是什么版本的 Python?我更改了示例代码以使用早期版本的 Python。
    猜你喜欢
    • 2011-04-28
    • 2010-11-29
    • 2017-01-18
    • 2018-08-27
    • 2021-02-11
    • 2023-03-26
    • 2010-12-24
    • 2015-04-29
    • 2013-04-14
    相关资源
    最近更新 更多