【发布时间】:2018-08-06 04:18:46
【问题描述】:
所以我有一个将 XML 文件转换为 CSV 的脚本,这个脚本有一个包含嵌套循环的函数,准确地说是 2 个循环:
FichList = [ f for f in os.listdir(FilenamePath) ]
def SplitFichierR50 (l_FichList):
for filename in FichList:
if filename.count(".xml") ==1:
print(filename)
tree = etree.parse(FilenamePath+"/"+filename)
for mes in tree.xpath("/R50/PRM/Donnees_Releve"):
l_ID_PRM =mes.getparent()[0]
EN_TETE=mes.getparent().getparent()[0]
l_ID_FLUX = EN_TETE[0]
l_LIB_FLUX = EN_TETE[1]
.
.
.
等...直到拥有所有 XML 数据并将其写入 CSV 文件,此脚本工作正常,但我必须优化它的执行以使其工作更快,所以我使用多处理模块将其添加到脚本:
if __name__ == '__main__':
jobs = []
for i in range(10): # I want to use 10 CPUs
p = multiprocessing.Process(target=SplitFichierR50,args=(FichList,))
jobs.append(p)
p.start()
它确实在 10 个 CPU 上执行脚本,但它对同一个文件执行 10 次相同的操作。
在截图中我只使用了 3 个 CPU,但我们可以看到它是同一个文件 3 次。
我想在不同的 CPU 上执行循环的每个迭代。
请帮忙!!
【问题讨论】:
-
请修正缩进。
-
@ikac 你是什么意思?
标签: python-2.7 multiprocessing python-multiprocessing python-multithreading