首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >清除内部线程的ipywidget输出

清除内部线程的ipywidget输出
EN

Stack Overflow用户
提问于 2020-08-08 18:55:20
回答 1查看 431关注 0票数 1

我试图从线程内部清除ipwidget输出

例如,我想让计数器计数到10,在线程中运行,并且只显示当前的数字。

代码

代码语言:javascript
复制
import ipywidgets as widgets
import time
from IPython.display import display, HTML
from concurrent.futures import ThreadPoolExecutor

output = widgets.Output()
display(output)

def my_foo():
    for count in range(10):
        output.clear_output(wait=True)
        output.append_display_data(HTML(f"count {count}"))
        time.sleep(1)
        
with ThreadPoolExecutor() as executor:
    executor.submit(my_foo)

期望输出

以上代码的最终输出应该是

代码语言:javascript
复制
count 9

实际输出

代码语言:javascript
复制
count 0
count 1
count 2
count 3
count 4
count 5
count 6
count 7
count 8
count 9
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-28 13:35:53

根据文档,您似乎使用了正确的调用。

避免意外的最好方法是不要在多个线程生成输出的上下文中使用输出小部件的上下文管理器。

然而,我从一个后台线程中经历了同样的问题。我确实手动将输出设置为一个看似有效的空列表(虽然我不确定它是否干扰了ipywidgets跟踪更新的内部状态):

代码语言:javascript
复制
output.outputs = []  # instead of output.clear_output()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63319165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档