toga 异步处理
from concurrent import futures
import toga
from toga.style import Pack
from toga.style.pack import COLUMN, CENTER
import asyncio
import time
def sync_function1(name = 'bbb'):
print(f"开始执行同步函数,name: {name}")
time.sleep(2)
print("同步函数执行完成")
return "执行结果"
def func(x):
print(x['data'])
time.sleep(0.5)
def sync_function2():
print(f"开始执行异步函数")
lst = [
{
'data':'1'
},
{
'data': '2'
},
{
'data': '3'
}
]
with futures.ThreadPoolExecutor(max_workers = 4) as executor:
result = executor.map(func, lst)
for r in result:
pass
print("异步函数执行完成")
return "执行结果"
class AsyncApp(toga.App):
async def button_handler(self, _):
await asyncio.to_thread(sync_function1, 'aaa')
await asyncio.to_thread(sync_function1)
await asyncio.to_thread(sync_function2)
def startup(self):
button = toga.Button(
'执行耗时任务',
on_press = self.button_handler,
style = Pack(padding = 50)
)
box = toga.Box(
children = [button],
style = Pack(direction = COLUMN, alignment = CENTER)
)
self.main_window = toga.MainWindow(title = self.formal_name)
self.main_window.content = box
self.main_window.show()
def main():
return AsyncApp('Async Toga App', 'org.example.asynctogaapp')
if __name__ == '__main__':
main().main_loop()
本文来自博客园,作者:Hany47315,转载请注明原文链接:https://www.cnblogs.com/hany-postq473111315/p/18834200

浙公网安备 33010602011771号