python - 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 不适用于星图。您可以使用以下内容:
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
推荐阅读
- regex - 在字符串中查找大写字母、数字、括号和冒号
- asp.net - 在没有 MVC 或 Razor 的情况下使用 ASP.NET Core 标记帮助程序 asp-append-version
- c - 如何从包含-city1 city2 distance-的txt文件创建邻接矩阵
- python - Python 多处理进程未启动
- amazon-web-services - 路由应用程序时如何以编程方式在 IAM 用户之间切换?
- spring - 我可以从另一个应用程序(Spring boot 或 Micronaut 应用程序)内部启动另一个应用程序(启动 Redis 缓存服务器)吗?
- c++ - 在 Visual C++(缓冲区溢出)中处理 C6386 的“正确”方式?
- jquery - 如何清除/重置/刷新 selectNode 或 selectEdge 的 vis.js 函数?
- pandas - 3 列通过,传递的数据有 50 列
- reactjs - 如何强制反应元素有一个接受 ref 的孩子?