tqdm并且dask是在Python迭代都惊人的包。在tqdm实现所需的进度条的同时,dask实现了多线程平台,它们都可以使迭代过程更轻松。但是-我很难将它们结合在一起。
例如,以下代码dask使用tqdm.trange进度条在中实现了延迟执行。事实是,由于delayed迅速执行,进度条立即结束,而真正的计算时间工作则在compute零件中完成。
from dask import delayed,compute
from tqdm import trange
from time import sleep
ct = time()
result= []
def fun(x):
sleep(x)
return x
for i in trange(10):
result.append(delayed(fun)(i))
print compute(result)
Run Code Online (Sandbox Code Playgroud)
如何将进度条附加到compute命令的实际执行中?
from dask.diagnostics import ProgressBar
with ProgressBar():
compute(result)
Run Code Online (Sandbox Code Playgroud)
您可以使用此插件体系结构在每个任务结束时发出信号。 http://dask.pydata.org/en/latest/diagnostics.html
这是某人正是这样做的示例:https : //github.com/tqdm/tqdm/issues/278
基于 :
from tqdm.dask import TqdmCallback
with TqdmCallback(desc="compute"):
...
arr.compute()
# or use callback globally
cb = TqdmCallback(desc="global")
cb.register()
arr.compute()
Run Code Online (Sandbox Code Playgroud)
应用于问题中的代码:
from dask import delayed,compute
from tqdm.auto import tqdm
# from tqdm import trange
from time import sleep
from tqdm.dask import TqdmCallback
# ct = time()
result= []
def fun(x):
sleep(x)
return x
for i in tqdm(range(10)):
result.append(delayed(fun)(i))
with TqdmCallback(desc="compute"):
print(compute(result))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
757 次 |
| 最近记录: |