在python中进行多处理,处理多个文件



我已经完成了一个脚本来同时转换多个文件,但是代码不是将 4 个文件与多个进程一起转换,而是使用多个进程逐个转换文件,这是我的代码:

def convert (directoryName):
  for path, dirs, files in os.walk(directoryName):
    for f in files:
      if f.endswith(".txt")
        f1=f
        path1=path         
        p=mp.Process(target=convert1, args=(path1,f1,))
  p.start()

有人有想法吗?

您的代码每次都会覆盖p,因此您只在循环完成后启动 1 个进程。

相反,请在创建进程时调用p.start,并将其存储,以便最终可以在所有进程上调用join

def convert (directoryName):
  process_list = []
  for path, dirs, files in os.walk(directoryName):
    for f in files:
      if f.endswith(".txt")
        f1=f
        path1=path         
        p=mp.Process(target=convert_stdf_hdf5, args=(path1,f1,))
        p.start()
        process_list.append(p)
  # wait for processes to finish
  for p in process_list:
     p.join()

您可以使用星图轻松完成。(Python3.3 或更高版本。

import os
from multiprocessing import Pool
def convert(directoryName):
    p = Pool()
    args = []
    for path, dirs, files in os.walk(directoryName):
        args.extend([[path, f] for f in files if f.endswith('.txt')])
    p.starmap(convert_stdf_hdf5, args)
if __name__ == '__main__':
    convert('path/to/target/')

相关内容

  • 没有找到相关文章

最新更新