python - 为什么 multiprocessing.Pool 不启动?对于带有一些处理的简单 I/O 案例
问题描述
我正在尝试将一些 cvs 读入数据帧,进行一些处理并再次保存结果(这次是对它们进行腌制)。我在 Windows 10 上运行 jupyter-notebook。
def clean_logs(filename : str):
print('Started reading {fname}'.format(fname=filename))
df = pd.read_csv('../datasets/complete_logs/{fname}'.format(fname=filename), index_col=0)
print('Finished reading {fname}'.format(fname=filename))
new_df = clean_logs_df(df)
print('Finished cleaning {fname}'.format(fname=filename))
new_df.to_pickle('../datasets/complete_logs_cleaned/{fname}.pkl'.format(fname=filename[:-4]))
我只添加了打印件,因此我可以在运行时遵循我的代码。基本上它需要一个文件名,读取该文件,处理它并再次保存它。
当我简单地这样做时:
for fname in logs_files:
clean_logs(fname)
一切正常,我得到了所有的打印件。但是,如果我尝试这个:
n_threads = mp.cpu_count()
with mp.Pool(n_threads) as pool:
try:
pool.map(clean_logs, logs_files)
except Exception:
print(format_exc(sys.exc_info()))
我没有得到一张印刷品。出于某种原因,它只会永远阻止我的 jupyter-notebook。有人可以为我提供一些关于这方面的见解以及为什么会发生这种情况吗?
非常感谢您提前。
PS:我在 Manjaro Linux 上运行了类似于多“线程”版本的代码,没有任何问题。是的,mp.cpu_count() 正确地返回了 12,这没什么奇怪的。
解决方案
推荐阅读
- javascript - 使用 puppeteer 获取元素和文本列表
- python - 没有名为错误的模块。如何从不同目录的 python 中的 .pyx 文件导入函数?
- jquery-ui - Jquery Autocomplete 错误 menuselect 和 menufocus 无法读取未定义的属性值
- ios - iOS 使用 Agora 语音通话加入和离开频道时状态栏显示为红色
- php - 在php中进行求和时如何处理空值
- python - Runtime.ImportModuleError:无法导入模块“lambda_function”:没有名为“httplib2”的模块
- laravel - 如何在laravel中显示具有yajra数据表多对多关系的数据?
- hadoop - 为什么 cloudera 5.12 vm 中的默认复制因子为 1,而在以前的版本中为 3?
- swift - 向现有项目添加共享扩展。所以已经存在的项目 pod 开始出现错误
- python - 如何将字体标签设置为 Helvetica 并使用 matplotlib 重新设计轴标签文本