python中“ for循环”进程下的多线程/多进程

问题描述

我查看了与此主题相关的其他stackexchange线程,但理解起来似乎有些复杂。所以这是我的具体示例问题。

我有一个程序,其中提取并绘制来自file.txt的数据,然后将其转换为PNG / JPEG。但是这种转换将需要10-15分钟,因为我必须将1000 file.txt转换为图像。所以所有这些代码行都将在for循环下执行

我的问题是如何通过执行多线程(或多进程)任务来使其运行更快。 或者欢迎任何建议。

代码示例:

对于循环: 以读取模式打开文件 提取数据 绘图散点图(x,y) 将地块保存为PNG 封闭情节

解决方法

签出multiprocessing,它是一个标准模块:https://docs.python.org/3/library/multiprocessing.html

您所需的内容几乎与最基本的示例完全相同:

from glob import glob
from multiprocessing import Pool

list_of_filenames = glob("/path/to/files/*.txt")

def f(filename):
    ...  # do contents of your for loop

if __name__ == "__main__":
    with Pool(5) as p:
        p.map(f,list_of_filenames)

别忘了if __name__ == "__main__":,我记得没有它可能会导致一些奇怪的错误。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...