TQDM 进度条和多处理



我正在尝试为我的程序添加一个进度条,但是,似乎适用于其他(在其他帖子上(的解决方案对我不起作用。

Python 版本 3.6。

import multiprocessing as mp
import tqdm
def f(dynamic, fix1, fix2):
return dynamic + fix1 + fix2
N = 2
fix1 = 5
fix2= 10
dynamic = range(10)
p = mp.Pool(processes = N)
for _ in tqdm.tqdm(p.starmap(f, [(d, fix1, fix2) for d in dynamic]), total = len(dynamic)):
pass
p.close()
p.join()

知道为什么多处理工作(计算完成(,但没有进度条吗?

注意:上面的例子是虚拟的,我的函数是不同的。

其他问题:如何正确中断多处理程序?我通常在签名线程中执行的ctrl+C似乎带来了一些问题。

不幸的是,tqdm 不适用于 starmap。您可以使用以下内容:

def f(args):
arg1, arg2 = args
... do something with arg1, arg2 ...

for _ in tqdm.tqdm(pool.imap_unordered(f, zip(list_of_args, list_of_args2)), total=total):
pass

相关内容

  • 没有找到相关文章

最新更新