我有一个程序在循环中加载2600个图像,进行一些处理并返回一个值。伪代码:
for file in files:
codes[file] = my_function(file)
return codes
问题是 - 这个过程大约需要20-30分钟,而且似乎只使用一个CPU核心。我正在寻找一种快速而肮脏的方式在更多核心上运行它,可能是将列表分成两部分。我已经阅读了很多关于Python及其问题/解决方案的内容,但我无法确定下一步该做什么。我该怎么做?
仅供参考2009年使用Python 2.7 Macbook Pro(Core 2 Duo)w / Numpy Scipy Scikit-image& OpenCV的。
答案 0 :(得分:4)
最简单的方法是multiprocessing
:
from multiprocessing import Pool
with Pool() as p:
all_codes = p.map(my_function, files)
return {f:code for code, f in zip(all_codes, files)}