python - 多处理 : use tqdm to display a progress bar

标签 python multiprocessing progress-bar tqdm

为了使我的代码更“pythonic”和更快,我使用 multiprocessing 和 map 函数来发送它 a) 函数和 b) 迭代范围。

植入的解决方案(即直接在范围 tqdm.tqdm(range(0, 30)) 上调用 tqdm)不适用于多处理(如公式下面的代码)。

进度条显示从0到100%(python读取代码时?)但并不表示map函数的实际进度。

如何显示一个进度条来指示“ map ”功能在哪一步?

from multiprocessing import Pool
import tqdm
import time

def _foo(my_number):
   square = my_number * my_number
   time.sleep(1)
   return square 

if __name__ == '__main__':
   p = Pool(2)
   r = p.map(_foo, tqdm.tqdm(range(0, 30)))
   p.close()
   p.join()

欢迎任何帮助或建议...

最佳答案

使用 imap 代替 map,后者返回已处理值的迭代器。

from multiprocessing import Pool
import tqdm
import time

def _foo(my_number):
   square = my_number * my_number
   time.sleep(1)
   return square 

if __name__ == '__main__':
   with Pool(2) as p:
      r = list(tqdm.tqdm(p.imap(_foo, range(30)), total=30))

关于python - 多处理 : use tqdm to display a progress bar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41920124/

相关文章:

python - 无法查询 ListField(EmbeddedDocumentField)

python - 为什么python在 "."之后允许对象和方法名之间有空格

python - 通过 Python 中的并行执行,我会获得显着的性能提升吗?

python - 多处理共享值进程和循环

java - 尝试添加进度时进度条变为空

python - 正则表达式-处理 null(当表达式之间不存在字符时)

python - 如何检查列列表上的条件?

python - 文件在进程中使用时自动关闭

wpf - WPF的进度条不会在最后的ProgressChanged更新

jquery - 通过特定值jquery连续增加宽度值