Python3:如何将 set_description 与 tqdm.contrib.concurrent process_map 一起使用
Python3: How to use set_description with tqdm.contrib.concurrent process_map
我一直在使用 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)
但是我得到了AttributeError: 'str' object has no attribute 'desc'
是不是因为tqdm.contrib.concurrent
的process_map不能和tqdm.tqdm
的set_description混用?
编辑:process_map
接受直接传递给 tqdm 的附加关键字参数列表。这意味着您可以简单地使用一个额外的关键字参数 desc
,如下所示。
r = process_map(myfunc, mylist, max_workers=16, desc="My Description")
AFAIK,没有简单的方法来做到这一点(到目前为止)。但是,process_map
有一个名为 tqdm_class
的可选参数,您可以利用它来发挥自己的优势 (docs)。
您可以创建自定义 class 继承默认 class tqdm.tqdm
并相应地设置属性。
import tqdm
class my_tqdm(tqdm.tqdm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.desc = "My Description"
然后您可以将此习俗 class 传递给 process_map
r = process_map(myfunc, mylist, max_workers=16, tqdm_class=my_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)
但是我得到了AttributeError: 'str' object has no attribute 'desc'
是不是因为tqdm.contrib.concurrent
的process_map不能和tqdm.tqdm
的set_description混用?
编辑:process_map
接受直接传递给 tqdm 的附加关键字参数列表。这意味着您可以简单地使用一个额外的关键字参数 desc
,如下所示。
r = process_map(myfunc, mylist, max_workers=16, desc="My Description")
AFAIK,没有简单的方法来做到这一点(到目前为止)。但是,process_map
有一个名为 tqdm_class
的可选参数,您可以利用它来发挥自己的优势 (docs)。
您可以创建自定义 class 继承默认 class tqdm.tqdm
并相应地设置属性。
import tqdm
class my_tqdm(tqdm.tqdm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.desc = "My Description"
然后您可以将此习俗 class 传递给 process_map
r = process_map(myfunc, mylist, max_workers=16, tqdm_class=my_tqdm)