python协程多任务youfanhuidaima
时间: 2024-05-10 20:16:23 浏览: 176
下面是一个使用 Python 协程实现多任务的示例代码:
```python
import asyncio
async def task1():
while True:
print("Task 1")
await asyncio.sleep(1)
async def task2():
while True:
print("Task 2")
await asyncio.sleep(2)
async def main():
task1_coro = asyncio.create_task(task1())
task2_coro = asyncio.create_task(task2())
await asyncio.gather(task1_coro, task2_coro)
asyncio.run(main())
```
这个示例代码中,我们定义了两个协程函数 `task1` 和 `task2`,它们分别会每隔 1 秒和 2 秒输出一次任务名字。在 `main` 函数中,我们使用 `asyncio.create_task` 创建了两个任务的协程对象,并使用 `asyncio.gather` 等待它们完成。
在运行这个示例代码时,你会看到两个任务交替执行输出它们的名字。这就是使用 Python 协程实现的多任务,它可以在一个线程中完成多个任务的切换,从而实现了异步的效果。
相关问题
python协程多任务asyncio代码]
下面是一个简单的Python协程多任务asyncio代码示例:
```python
import asyncio
async def task1():
while True:
print("Task 1 executed")
await asyncio.sleep(1)
async def task2():
while True:
print("Task 2 executed")
await asyncio.sleep(2)
async def main():
task1_ = asyncio.create_task(task1())
task2_ = asyncio.create_task(task2())
await asyncio.gather(task1_, task2_)
asyncio.run(main())
```
在这个示例中,我们定义了两个协程函数`task1()`和`task2()`,它们分别打印出"Task 1 executed"和"Task 2 executed"的信息,并在每个任务执行后等待一定的时间。我们使用`asyncio.create_task()`函数创建了两个任务,并使用`asyncio.gather()`函数等待这两个任务的完成。
在`main()`函数中,我们调用`asyncio.run()`函数来运行整个协程。当我们运行这个示例时,我们可以看到在每个任务执行后,程序会等待一定的时间,然后再执行下一个任务。这就是Python协程的魔力,它可以使我们的程序在执行多个任务时更加高效。
python协程多任务asyncio不同gather
`asyncio.gather()` 和 `asyncio` 协程的主要区别在于:
- `asyncio.gather()` 用于并行运行多个协程并等待它们全部完成,而 `asyncio` 协程是单个协程的执行。
- `asyncio.gather()` 可以在一个任务中同时运行多个协程,而 `asyncio` 协程需要手动在代码中切换协程。
- `asyncio.gather()` 可以在一个任务中同时运行多个协程,并且可以在所有协程都完成后返回结果,而 `asyncio` 协程需要在协程之间手动传递数据。
举个例子,假设我们有两个协程 `coro1()` 和 `coro2()`,我们可以使用 `asyncio.gather()` 使它们并行运行并等待它们全部完成,如下所示:
```python
import asyncio
async def coro1():
print('coro1 started')
await asyncio.sleep(2)
print('coro1 finished')
async def coro2():
print('coro2 started')
await asyncio.sleep(1)
print('coro2 finished')
async def main():
await asyncio.gather(coro1(), coro2())
asyncio.run(main())
```
输出结果:
```
coro1 started
coro2 started
coro2 finished
coro1 finished
```
在上面的例子中,我们使用 `asyncio.gather()` 并行运行了 `coro1()` 和 `coro2()`,并且等待它们全部完成后才结束程序。
阅读全文