用 asyncio 实现多线程异步多任务的界面操作

b4e0f5fffa7dcf7e67f7c6ccfcaed65b.gif

前言

最近有个项目需要从窗口客户端发起的异步多任务请求,为了长时间后台操作不卡死前台操作,则还需要发起多线程来隔离 UI 主界面事件循环和 asyncio 后台异步任务事件循环。

支持库简介

1. 异步协程库 asyncio

asyncio 采用协程的方式来实现事件循环,进而达到异步任务的效果。

pip install asyncio

协程使用@asyncio.coroutine装饰器来标记异步任务,使用yield from来等待异步任务完成。其中

  • @asyncio.coroutine === async

  • yield from === await

自从引入了 async/await 关键字以后,代码实现更是优雅了很多。

2. 界面库 wxPython

wxPython是一个跨平台的GUI工具包为Python编程语言。它允许 Python 程序员简单轻松地创建具有强大、功能强大的图形用户界面的程序。它是作为一组 Python 扩展模块实现的,这些模块包装了流行的wxWidgets跨平台库的 GUI 组件,该 库是用 C++ 编写的。

pip install wxpython

特别是在windows下,能实现很多独特酷炫的窗口效果,具体可以运行 wxDemo 示例参考。

# 运行 python目录下/Scripts/wxdemo.exe
C:\ProgramData\Anaconda3\envs\ctrip_code36\Scripts>wxdemo.exe
162dd50a9996c146ca9b33133844684a.png

多任务协程

1. 创建异步任务

我们先简单创建一个异步任务,随机一个任务时长

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bluishfish

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值