我正在嘗試定期記錄滑塊小部件的值。我查看了Asynchronous Widgets的官方檔案。但是對于我的代碼,似乎仍然會發生阻塞。
import threading
import time
from ipywidgets import widgets
w = widgets.IntSlider()
out = widgets.Output()
def record():
for i in range(10):
time.sleep(1)
with out:
print(f"record {w.value}")
t = threading.Thread(target=record)
display(w,out)
t.start()
t.join()
當我拖動滑塊時,我期望每秒輸出滑塊值。相反,它只在拖動程序中列印 0。
我還嘗試將兩個行程都放在執行緒中(并對滑塊使用觀察方法),但效果不佳。
環境:Jupyter 實驗室 3.2.1
uj5u.com熱心網友回復:
問題來自join在代碼末尾呼叫該函式。呼叫join您的執行緒會阻止您的小部件更新。我還要通過你的小工具w,你的輸出out作為引數傳遞給你的`錄音功能(在這里)。所以總的來說,代碼看起來像這樣:
import threading
import time
from ipywidgets import widgets
w = widgets.IntSlider()
out = widgets.Output()
def record(w,out):
for i in range(10):
time.sleep(1)
with out:
print(f"record {w.value}")
t = threading.Thread(target=record,args=(w,out,))
display(w,out)
t.start()
輸出示例如下所示:
record 0
record 30
record 30
record 50
record 72
record 97
record 80
record 80
record 35
record 35
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/382684.html
