繁体   English   中英

multiprocessing.pool代码卡住,无法完成运行

[英]multiprocessing.pool code stuck and does not finish running

我正在尝试在python的多处理模块中使用pool类来并行处理一些在pandas数据框架上的数据(下面的“主代码”标题下提到的代码)。 问题是我的代码卡住了,并且无论我提供的输入数据帧有多小(甚至小到10行),它也无法完成运行。 我还尝试运行一个简单的示例代码(下面的“池示例”标题下提到的代码),即使这样也无法运行。

这是我要在下面的代码中进行的操作的详细说明:我有一个索引数据框,其中包含10列和650K行。 这个想法是在索引数据帧的每一行中获取10个值,对于具有来自目标数据帧“ traindat”的那些索引的行,取其几列的平均值。 我必须对索引数据帧(650K)的所有行执行此操作。

主要代码:

from multiprocessing import Pool
def func(x,i):
    dftmp=traindat.iloc[x,4:28].mean()
    return pd.DataFrame(dftmp).transpose()

pool = mp.Pool(processes=3)
new_rows = pool.map(func, [(row,idx) for idx,row in indices.iterrows()])
pool.close()
pool.join()
data_all_new = pd.concat(new_rows)

由于此代码无法运行,因此我还尝试了以下简单代码来查看pool是否完全为我运行。 事实并非如此。 池示例:

import sys
sys.modules['__main__'].__file__ = 'ipython'
from multiprocessing import Pool
def f(x):
    return x*x

if __name__ == '__main__':
    p = Pool(5)
    print(p.map(f, [1, 2, 3]))

我的代码没有任何错误。 它只是卡住而不能完成运行。 如果您了解此问题,请帮助我。

编辑:我后来意识到该问题仅在Windows中发生。 因此,编辑问题以使其包含在内。

我意识到在同事的帮助下,这是一个重复的问题。 发布链接到原始问题和答案,以防万一有人偶然发现此问题: Windows上的基本并行python程序冻结

似乎这是与未正确配置IDE有关的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM