【问题标题】:Python Multiprocessing: Loop through files to export dataPython 多处理:循环文件以导出数据
【发布时间】:2019-12-06 15:36:31
【问题描述】:

我编写了一个代码来从特定文件格式中提取数据并导出到 *.csv 文件。我正在为多个相同格式的文件循环执行此操作。通过这种方式,我只使用计算机的一个核心(加载

我编写的以下代码不能在循环中工作,希望获得有关如何以正确方式执行此操作的建议。

提前致谢。

这是我的完整代码。

from pathlib import Path
from win32com.client import Dispatch
import os
import multiprocessing as mp

# Provide path to import and export data
import_path = r'C:\Data_Analysis\New_folder.' # data folder path 
export_path = r'C:\Data_Analysis\New_folder\Export' # CSV file export folder path

def multiprocessing_func(filenames):

 for filenames in Path(import_path).rglob('*.dxz'):   
 # Call DCOM object
  dw = Dispatch("Dewesoft.App")

 # Initialise the software
  dw.Init()

  # Load data file
  dw.LoadFile(filenames)

  # Change the channels property
  for i in range(0, dw.Data.AllChannels.Count):        
      dw.Data.AllChannels.Item(i).Exported = True
      dw.Data.AllChannels.Item(i).CustExportRate = 1

# Extract file name from imported file
  ExpName = os.path.basename(filenames)
  ExportName = os.path.splitext(ExpName)[0]

# Export data to CSV file
  dw.ExportData(7, 1, export_path + "\\" + ExportName + ".csv")

# Close the software
dw = None

if __name__ == '__main__':
  pool = mp.Pool()
  pool.map(multiprocessing_func, Path(import_path).rglob('*.dxz'))
  pool.close()
  pool.join()

【问题讨论】:

  • 你不是在做并行处理,你只是在创建一个从文件中读取的进程。

标签: python loops for-loop multiprocessing python-multiprocessing


【解决方案1】:

您的脚本中有一个简单的错误:您还没有使用multiprocessing_funcfilenames 参数。这就是您目前看不到多处理的原因。

使用默认进程数调用 Pool 很好,python 文档状态

processes 是要使用的工作进程数。如果 processes 为 None 则使用 os.cpu_count() 返回的数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2021-10-01
    • 1970-01-01
    • 2021-01-22
    • 2016-12-27
    • 1970-01-01
    • 2018-04-17
    相关资源
    最近更新 更多