前言
最近有个项目需要从窗口客户端发起的异步多任务请求,为了长时间后台操作不卡死前台操作,则还需要发起多线程来隔离 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](https://img-blog.csdnimg.cn/img_convert/162dd50a9996c146ca9b33133844684a.png)
多任务协程
1. 创建异步任务
我们先简单创建一个异步任务,随机一个任务时长