跟踪python列表中的进度(map(...))

jpp*_*jpp 2 python loops jupyter-notebook

我试图跟踪以下代码中的进度:

from toolz import compose
calculator = compose(my_function, list, my_dict.get, tuple)
result = list(zip(*map(calculator, my_values)))
Run Code Online (Sandbox Code Playgroud)

my_values是一个长度〜1mio的列表.我的第一次尝试是my_function为该增量添加一个计数器,并在X==500达到X(例如)的倍数时将其打印出来.

是否有一种pythonic或更简洁的方法来实现这一点,即没有向各种循环添加大量计数器?jupyter笔记本中的进度条也可以.

mus*_*rat 7

如果Jupyter中的进度条可以使用tqdm,我喜欢使用,因为它适用于任何可迭代的.下面是一些示例代码(来自例如略有简化,因为我不得不写my_function,my_values等):

def my_function(x):
    yield x + 2

my_values = range(1000000)

result = list(zip(*map(my_function, my_values))) 
Run Code Online (Sandbox Code Playgroud)

现在只需添加tqdm my_values(没有进度检查器/计数器堵塞你的代码!)以获得一个很好的进度条:

from tqdm import tqdm

def my_function(x):
    yield x + 2

my_values = tqdm(range(1000000))

result = list(zip(*map(my_function, my_values)))
Run Code Online (Sandbox Code Playgroud)

滚过令人敬畏的tqdm进度条:

100%|??????????| 1000000/1000000 [00:04<00:00, 210661.41it/s]
Run Code Online (Sandbox Code Playgroud)

注意我与tqdm项目无关; 我只是喜欢用它. https://github.com/tqdm/tqdm