繁体   English   中英

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

[英]Multiprocessing with multiple tqdm progress bars

我有多个并行处理的大型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---------------------')

任何提示将不胜感激!

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

EDIT2:这是@bouteillebleu,我确实得到了它的条,但是由于某种原因,仅更新了最后一条。 当前进度条

尝试使用最新版本的tqdmv4.18.0或更高版本,请参阅https://github.com/tqdm/tqdm/releases

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM