问题描述
我查看了与此主题相关的其他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__":
,我记得没有它可能会导致一些奇怪的错误。