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