Ipython小部件(如何制作计时器)

Ipython小部件(如何制作计时器),python,jupyter-notebook,ipython-parallel,ipywidgets,Python,Jupyter Notebook,Ipython Parallel,Ipywidgets,我制作了这个定时器小部件,它可以按照我想要的方式工作,但是它会锁定笔记本,所以我不能同时执行其他代码单元 这里有一个例子来说明我的意思: 有什么办法让小部件在后台执行吗? 如果有帮助,下面是制作上述小部件的代码: 将IPyWidget作为小部件导入 从IPython.display导入显示,Javascript 从traitlets导入Unicode,验证 导入时间 类计时器(widgets.DOMWidget): _查看\u name=Unicode('HelloView').tag(syn

我制作了这个定时器小部件,它可以按照我想要的方式工作,但是它会锁定笔记本,所以我不能同时执行其他代码单元

这里有一个例子来说明我的意思:

有什么办法让小部件在后台执行吗?

如果有帮助,下面是制作上述小部件的代码:

将IPyWidget作为小部件导入
从IPython.display导入显示,Javascript
从traitlets导入Unicode,验证
导入时间
类计时器(widgets.DOMWidget):
_查看\u name=Unicode('HelloView').tag(sync=True)
_view_module=Unicode('hello')。标记(sync=True)
_视图\模块\版本=Unicode('0.1.0')。标记(sync=True)
value=Unicode('00:00:00')。标记(sync=True)
def timeit(自身,b,极限=180):
#显示(自我)
小时=0
分钟=0
秒=0
对于范围(1)(极限*60+1)内的i:
如果i%60==0:
如果i%3600==0:
秒=0
分钟=0
小时数+=1
其他:
秒=0
分钟+=1
其他:
秒+=1
时间。睡眠(1)
self.value='{hour:02}:{minute:02}:{second:02}'。格式(小时=小时,分钟=分钟,秒=秒)
def显示计时器(计时器):
按钮=小部件。按钮(description=“Start Timer”,button\u style='info')
显示(按钮)
显示器(计时器)
按钮。单击(timer.timeit)

我找到了一个解决方案。请阅读本文了解详细信息

您可以使用
线程
库使更新功能(在我的例子中是每秒更新一次的计时器)单独运行,这样您仍然可以执行其他代码单元

此外,我还试着在简单的测试函数上执行了两个
%%timeit
,如下所示:

[x*=x表示范围(20)内的i]


看起来在后台运行这个计时器小部件并没有显著增加执行时间。

我找到了一个解决方案。请阅读本文了解详细信息

您可以使用
线程
库使更新功能(在我的例子中是每秒更新一次的计时器)单独运行,这样您仍然可以执行其他代码单元

此外,我还试着在简单的测试函数上执行了两个
%%timeit
,如下所示:

[x*=x表示范围(20)内的i]

看起来,在后台运行这个计时器小部件并没有显著增加执行时间