我写了一段代码,从特定的文件格式提取数据并导出到* .csv文件。我正在循环处理多个相同格式的文件。这样,我只使用计算机的一个内核(加载量小于15%),因此转换我拥有的所有文件都需要很长时间。因此,我尝试进行多处理,以便在使用全部CPU能力的情况下并行完成我的工作。
我编写的以下代码无法循环使用,希望获得有关如何正确使用方法的建议。
谢谢。
这是我完整的代码。
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()
答案 0 :(得分:0)
您的脚本中还有一个简单的错误:您尚未使用filenames
的{{1}}参数。这就是为什么您现在看不到任何多处理的原因。
在python文档状态下,使用默认进程数调用multiprocessing_func
很好
processes是要使用的辅助进程数。如果进程为None,则使用os.cpu_count()返回的数字。