从入门到富豪 发表于 2021-10-30 16:59:34

关于协程的基础问题,求大神解答。

很多教程都是用asyncio.sleep()来举例,但是和实际应用差别太大了。

如下面的例子,目的:picturejih 里面有 3个子列表, 我想用协程‘’同步‘’取这3个子列表的值, 跪求大佬指点应该如何做呢?

import asyncio

picturejihe = [['a','b','c'],['d','e','f'],['g','h','i']]

def quzhi():
    for i in picturejihe:
      yield i


async def xieru(y):
    for x in quzhi():
      for z in x:
            print(z)
async def main():
    task1 =asyncio.create_task(xieru(3))
    task2 =asyncio.create_task(xieru(1))
    await task1
    await task2
asyncio.run(main())

从入门到富豪 发表于 2021-10-30 17:01:50

我想用协程‘’异步‘’取这3个子列表的值, 跪求大佬指点应该如何做呢?在线等,急!

Stubborn 发表于 2021-10-30 17:03:00

想达到的结果是什么,同步取值是什么意思?

kogawananari 发表于 2021-10-30 17:05:28

协程只能在IO操作的时候有用asyncio.sleep模拟的IO太过于正常

你应该用aiohttp库 sqlalchemy.ext.asyncio库来试试你会发现asyncio.run根本不能运行 loop.run_until_complete()也大概率没法用只有asyncio.run_coroutine_threadsafe是最好用的

从入门到富豪 发表于 2021-10-30 17:06:16

kogawananari 发表于 2021-10-30 17:05
协程只能在IO操作的时候有用asyncio.sleep模拟的IO太过于正常

你应该用aiohttp库 sqlalchemy.ext.asyn ...

实际上有大IO操作,只是原代码过于复杂, 我就举了个简单的例子来描述问题了。
页: [1]
查看完整版本: 关于协程的基础问题,求大神解答。