python - 循环中的多处理, "Pool not running"错误

标签 python multiprocessing python-multiprocessing pathos

我试图在循环中运行一些计算,每个计算都会创建、使用和关闭一个池。但计算只运行一次,然后抛出错误:“池未运行”。当然旧的没有运行,但新的不应该创建吗?

下面是一个简化的例子,类似于我的代码。更奇怪的是,在我的实际代码计算中,在崩溃之前运行了 7 次,所以我真的很困惑是什么问题。任何建议表示赞赏!

from pathos.multiprocessing import ProcessingPool as Pool

def add_two(number):  
    return (number + 2)

def parallel_function(numbers):
    pool = Pool(10)
    result = pool.imap(add_two, numbers)
    pool.close()
    pool.join()    
    return(result)

sets=[
    [1, 2, 3],
    [2, 3, 4],
    [3, 4, 5]
]

for one_set in sets:
    x = parallel_function(one_set)
    for i in x:
        print(i)

最佳答案

这是一个 pathos使用单例模式实现池的限制。

这是相关的issue ticket .

我建议您使用另一个 Pool of Workers 实现。

关于python - 循环中的多处理, "Pool not running"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60188150/

相关文章:

python - urllib2 是否比 python3 中的请求慢

python - 如何从字典中随机选择一个键

python - Celery Task 是按每个工作进程初始化还是每个应用程序初始化一次?

用于并行处理的 Python 多处理池

python - numpy.random.randint() 是否总是返回连续且对齐的 ndarray?

python - BeautifulSoup XML 解析不起作用

java - 带图形用户界面的 IPC(Java 和 native 代码)

python - 如何将 python asyncio 和多​​处理结合起来?

python - Pandas dataframe applymap并行执行

python - 在循环中使用 multiprocessing.pool 并更新目标函数