0
我正在並行處理多個大規模csv文件。我想有一個每個文件的進度條。使用多個tqdm進度條進行多處理
但是,雖然我顯示了5個小節,但只有最後一個正在更新 - 看起來像所有進程一次。由於我無法將整個csv文件讀入內存,我正在使用文件大小來顯示進度。
inputArg是以數字結尾的文件夾路徑。
def worker(inputArg):
with open(inputArg + '/data.csv') as csvfile:
size = os.path.getsize(inputArg + '/data.csv')
text = "progresser #{}".format(inputArg[-1])
pb = tqdm(total=size, unit="B", unit_scale=True, desc=text, position=int(inputArg[-1]))
reader = csv.reader(csvfile, delimiter=',')
for row in reader:
pb.update(len(row))
session.execute(*INSERT QUERY*)
def scheduler(inputData):
p = multiprocessing.Pool(multiprocessing.cpu_count()+1)
p.map(worker, inputData)
p.close()
p.join()
if __name__ == '__main__':
folders = glob.glob('FILEPATH/*')
print ('--------------------Insert started---------------')
scheduler(folders)
print('---------------------All Done---------------------')
任何暗示將不勝感激!
編輯:我沒有檢查其他答案,但我明確表示我想要多個進度條,並且該答案只給你一個。因此,這不是重複的。
編輯2:這看起來像@bouteillebleu,我得到我的酒吧,但只有最後一個更新出於某種原因。 Current progress bars
的可能的複製[如何通過在Python多過程中使用tqdm?](https://stackoverflow.com/questions/ 43064054 /如何使用-tqdm-through-multi-process-in-python) – Sraw
https://stackoverflow.com/questions/45742888/tqdm-using-multiple-bars有什麼幫助嗎?看起來您可以選擇每個欄的顯示位置,這樣可以查看每個處理的CSV的不同結果。 – bouteillebleu
@bouteillebleu感謝您的評論!我添加了一張圖片 - 因爲我已經使用位置參數,所以我確實得到了不同的小節。只是更新似乎有點毛病? – Illuminae