运行 CPU 密集型任务#
NiceGUI 提供了一个 cpu_bound
函数,用于在单独的进程中运行 CPU 密集型任务。对于那些长时间运行的计算而言,这非常有用,否则这些计算会阻塞事件循环并使 UI 无响应。该函数返回一个可以被等待的 future
。
import time
from nicegui import run, ui
def compute_sum(a: float, b: float) -> float:
time.sleep(1) # simulate a long-running computation
return a + b
async def handle_click():
result = await run.cpu_bound(compute_sum, 1, 2)
ui.notify(f'Sum is {result}')
ui.button('Compute', on_click=handle_click)
# ui.run()
<nicegui.elements.button.Button at 0x7fc6b1b7beb0>