首页 > 解决方案 > 从 jupyter 笔记本中的进程更新小部件

问题描述

类似于这个问题

创建一个浮动进度小部件并在另一个进程中更新它,为什么添加打印语句会更新进度条?这可以在没有打印语句的情况下完成吗?

Jupyter 版本:5.3

import sys; sys.version 

'3.7.3(默认,2019 年 3 月 27 日,22:11:17)\n[GCC 7.3.0]'

import multiprocessing as mp
from IPython.display import display
import ipywidgets as widgets
import time
progress = widgets.FloatProgress(value=0.0, min=0.0, max=1.0)

def work(progress):
    total = 100
    for i in range(total):
        print(i)
        time.sleep(0.2)
        progress.value = float(i+1)/total

p = mp.Process(target = work, args=(progress,))
display(progress)
p.start()

标签: pythonjupyter-notebookmultiprocessingjupyteripywidgets

解决方案


你看过tqdm模块吗?它几乎完全符合您的要求,并且有一个 jupyter notebook 扩展:

前任:

from tqdm.notebook import tqdm
for i in tqdm(range(100)):
    pass

打印这个漂亮的进度条,每次迭代都会更新:

tqdm


推荐阅读