В моем блокноте Jupyter я хочу выполнить несколько длительных фоновых заданий и отобразить их статус в ячейке. Я подумал, прежде чем делать что-то сложное, я мог бы начать с часов.
У меня есть следующий код в одной ячейке
import ipywidgets as widgets
import time
from datetime import datetime as dt
from IPython.display import HTML
from IPython.display import display
import threading
out = widgets.Output()
@out.capture(clear_output=True, wait=True)
def display_time():
now = dt.now().strftime("%H:%M:%S")
display(HTML(f"""<h1><center>{now}</center></h1>"""))
def run_time():
while True:
time.sleep(1)
display_time()
out
Когда я звоню run_time()
, время обновляется каждую секунду, но моя записная книжка блокируется в этой ячейке. Итак, я попробовал threading.Thread(target=run_time).start()
, но это почему-то только обновляет время всякий раз, когда я взаимодействую с блокнотом. Как я могу обновить записную книжку, даже если я не взаимодействую с ячейками?