python - 多处理for循环?

标签 python multiprocessing

i有一个数组(称为 data_inputs ),该数组包含数百个天文学图像文件的名称。然后操纵这些图像。我的代码工作,需要几秒钟来处理每个图像。但是,它一次只能执行一个图像,因为我正在通过循环的运行数组:

for name in data_inputs:
    sci=fits.open(name+'.fits')
    #image is manipulated

没有理由为什么我必须在其他任何之前修改图像,因此可以在我的计算机上使用所有4个内核,每个核心在其他图像上通过for循环运行?

我已经阅读了有关多处理模块,但我不确定如何在我的情况下实现它。 我热衷于获得多处理工作,因为最终我必须在10,000多个图像上运行。

最佳答案

您可以简单地使用 multiprocessing.Pool :

from multiprocessing import Pool

def process_image(name):
    sci=fits.open('{}.fits'.format(name))
    <process>

if __name__ == '__main__':
    pool = Pool()                         # Create a multiprocessing Pool
    pool.map(process_image, data_inputs)  # process data_inputs iterable with pool

关于python - 多处理for循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20190668/

相关文章:

python - 在 VS Code 中安装 mypy 的问题

multiprocessing - Ubuntu 10.04 - Python 多处理 - 'module' 对象没有属性 'local' 错误

python - Flask Web 服务器的多处理与多线程

python多处理谷歌计算引擎

python - 试图对我的Python Battleship游戏进行白痴验证

python - 尝试使用外键从不同类中按字段进行选择,出现错误

python - 计算德州扑克中 5 张牌的抽牌次数

python - 使用线程池(使用 UWSGI)时 Flask 应用程序不工作

python - 从不可变对象(immutable对象)读取时使用 multiprocessing.pool 映射时出错

python - Matplotlib 条形图 x 轴不会绘制字符串值