小编Ill*_*nae的帖子

具有多个 tqdm 进度条的多处理

我正在并行处理多个大型 csv 文件。我希望每个文件都有一个进度条。

然而,虽然我显示了 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---------------------')
Run Code Online (Sandbox Code Playgroud)

任何提示将不胜感激!

编辑:我确实检查了另一个答案,但我明确表示我想要多个进度条,而该答案只给你一个。因此,这不是重复的。

编辑2:这就是@bouteillebleu,我确实得到了我的酒吧,但由于某种原因只有最后一个被更新。 当前进度条

python csv python-multiprocessing tqdm

5
推荐指数
1
解决办法
7068
查看次数

标签 统计

csv ×1

python ×1

python-multiprocessing ×1

tqdm ×1