python 非阻塞实例
时间: 2023-09-13 14:10:01 浏览: 111
下面是一个 Python 的非阻塞实例,使用了 `asyncio` 库:
```python
import asyncio
async def non_blocking_task():
print('Start non-blocking task')
await asyncio.sleep(1)
print('Finish non-blocking task')
async def main():
print('Start main function')
task = asyncio.create_task(non_blocking_task())
print('Do something else here')
await asyncio.sleep(0.5)
print('Do more things here')
await task
print('Finish main function')
asyncio.run(main())
```
在上面的代码中,我们定义了一个异步函数 `non_blocking_task()`,它会在执行时暂停 1 秒钟。在 `main()` 函数中,我们创建了一个 `non_blocking_task()` 的任务,并打印一些信息,然后暂停了 0.5 秒,打印了更多信息,最后等待任务完成。
通过 `asyncio.create_task()` 函数,我们可以将 `non_blocking_task()` 函数转换为一个任务,并异步执行它,而不会阻塞主程序的执行。在等待任务完成之前,我们还可以执行其他的操作。
当我们运行上面的代码时,它会输出以下内容:
```
Start main function
Do something else here
Start non-blocking task
Do more things here
Finish non-blocking task
Finish main function
```
可以看到,`non_blocking_task()` 函数在后台异步运行,而 `main()` 函数可以在等待任务完成之前执行其他任务。这就是 Python 的非阻塞实现方式。
阅读全文