use*_*499 5 python parallel-processing tqdm
我一直在使用 tqdm.contrib.concurrent 中的 process_map :https://tqdm.github.io/docs/contrib.concurrent/
如何设置进度条的描述,该进度条在每次迭代中都会发生变化?
我尝试过:(在这里删除了很多代码以简化它......)
from tqdm.contrib.concurrent import process_map
import tqdm
def myfunc(htmlfile):
tqdm.tqdm.set_description(htmlfile)
### function contents go here
r = process_map(myfunc, mylist, max_workers=16)
Run Code Online (Sandbox Code Playgroud)
但我得到AttributeError: 'str' object has no attribute 'desc'
是因为 process_map fromtqdm.contrib.concurrent不能与 set_description from 混合吗tqdm.tqdm?
编辑:process_map接受直接传递给 tqdm 的附加关键字参数列表。这意味着您可以简单地使用附加关键字参数,desc如下所示。
r = process_map(myfunc, mylist, max_workers=16, desc="My Description")
Run Code Online (Sandbox Code Playgroud)
AFAIK,还没有简单的方法可以做到这一点(到目前为止)。但是,process_map需要一个可选参数,tqdm_class您可以使用它来发挥自己的优势(文档)。
您可以创建一个继承默认类的自定义类tqdm.tqdm并相应地设置属性。
import tqdm
class my_tqdm(tqdm.tqdm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.desc = "My Description"
Run Code Online (Sandbox Code Playgroud)
然后您可以将此自定义类传递给process_map
r = process_map(myfunc, mylist, max_workers=16, tqdm_class=my_tqdm)
Run Code Online (Sandbox Code Playgroud)