如何在 python 文件处理中选择多处理和多任务处理?
How to choose between multiprocessing and multitasking in python for file process?
我查看了与此主题相关的其他 StackExchange 线程,但似乎我需要进一步的帮助才能理解。
请看下面的场景?并说明要使用的方法和原因?
我已经编写了 Python 代码,它加载文件夹并提取 file.txt 然后调用函数“File_Processing”来处理单个文件,然后保存绘图绘制 x 和 y。因此,每 100 个文件需要 20 分钟。我有几个文件夹,每个文件夹包含 3000 个文件。
现在我的问题是要使用哪种方法,多处理还是多任务,为什么?
查看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__":
,我记得没有它可能会导致一些奇怪的错误。
我查看了与此主题相关的其他 StackExchange 线程,但似乎我需要进一步的帮助才能理解。
请看下面的场景?并说明要使用的方法和原因?
我已经编写了 Python 代码,它加载文件夹并提取 file.txt 然后调用函数“File_Processing”来处理单个文件,然后保存绘图绘制 x 和 y。因此,每 100 个文件需要 20 分钟。我有几个文件夹,每个文件夹包含 3000 个文件。
现在我的问题是要使用哪种方法,多处理还是多任务,为什么?
查看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__":
,我记得没有它可能会导致一些奇怪的错误。