我試圖在python中創建一個程序,該程序同時在不同的處理器上運行多個函數實例(15)。我一直在研究這一點,並使用多處理工具工具設置了下面的程序。Python:同時運行多個進程
不幸的是,程序按順序執行函數的每個實例(在進入循環的下一部分之前似乎要等待一個完成)。
from __future__ import print_function
from multiprocessing import Process
import sys
import os
import re
for i in range(1,16):
exec("path%d = 0" % (i))
exec("file%d = open('%d-path','a', 1)" % (i, i))
def stat(first, last):
for j in range(1,40000):
input_string = "water" + str(j) + ".xyz.geocard"
if os.path.exists('./%s' % input_string) == True:
exec("out%d = open('output%d', 'a', 1)" % (first, first))
exec('print("Processing file %s...", file=out%d)' % (input_string, first))
with open('./%s' % input_string,'r') as file:
for line in file:
for i in range(first,last):
search_string = " " + str(i) + " path:"
for result in re.finditer(r'%s' % search_string, line):
exec("path%d += 1" % i)
for i in range(first,last):
exec("print(path%d, file=file%d)" % (i, i))
processes = []
for m in range(1,16):
n = m + 1
p = Process(target=stat, args=(m, n))
p.start()
processes.append(p)
for p in processes:
p.join()
我對編程有新意,並沒有並行化經驗 - 任何幫助將不勝感激。
- 編輯 -
我已經包含上面的整個程序,與實際功能替代「有些功能」,證明這不是一個時間問題。該程序可能需要數天才能遍歷所有40,000個文件(每個文件都很大)。
- 另一個編輯 -
它看起來像前幾個反應是正確的 - 劇本確實同步推出多個進程。我的問題與我正在使用的集羣上的提交系統有關。
謝謝!