首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么‘`await asyncio.create_task(scheduler())’这行从不运行?

await asyncio.create_task(scheduler()) 这行代码从不运行的原因可能是因为在调用该代码之前,没有使用 await 关键字来等待 scheduler() 函数的执行结果。

在使用 asyncio.create_task() 函数创建一个任务时,需要将其作为 await 的参数,以便等待任务的完成。如果没有使用 await 关键字,代码会继续执行下一行,而不会等待任务的完成。

正确的用法应该是:

代码语言:txt
复制
await asyncio.create_task(scheduler())

这样,代码会等待 scheduler() 函数的执行结果,然后再继续执行后续的代码。

关于 asyncio.create_task() 函数,它是 Python 中 asyncio 模块提供的一个函数,用于创建一个异步任务。该函数会将指定的可等待对象(如协程函数、Future 对象等)封装成一个任务,并返回该任务对象。任务对象可以被 await 关键字等待,也可以通过 asyncio.gather() 函数进行批量等待。

asyncio.create_task() 的优势在于可以将一个可等待对象转换为一个任务对象,使其可以在事件循环中并发执行。它的应用场景包括但不限于:并发执行多个协程任务、管理协程任务的状态、实现协程任务的取消等。

腾讯云提供了一系列与异步编程和云计算相关的产品和服务,例如云函数(Serverless)、容器服务、弹性伸缩等,可以帮助开发者更好地利用云计算资源进行异步编程和任务调度。具体产品介绍和相关链接可以参考腾讯云官方文档:

请注意,以上答案仅供参考,具体的实际情况可能需要根据代码上下文和具体需求进行分析和调试。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

剖析灵魂,为什么aiohttp默认的写法那么慢?

运行效果如下图所示: ? 可以看到,运行时间大于 8 秒钟,也就是说,这段代码,是先请求第一个 3 秒的网址,等它运行完成以后,再请求第二个 5 秒的网址,他们根本就没有并行!...那为什么上面这段代码,并没有按这段逻辑来走? 这是因为,协程虽然可以充分利用网络 IO 的等待时间,但它并不会自动这么做。而是需要你把它加入到调度器里面。...那么为什么我们把很多协程放进一个 列表里面,然后把列表放进 asyncio.wait里面,也能实现并行呢?这是因为,asyncio.wait帮我们做了创建 Task 的任务。...但你需要注意一点,创建 Task 与await Task是分开执行的: tasks = [] for page in range(1000): task = asyncio.create_task...range(1000): task = asyncio.create_task(get(session, page)) await task 这是因为,创建 Task 的时候会自动把它加入到调度队列里面

1.6K10

Python协程-asyncio、asyncawait

async def main(): task1 = asyncio.create_task(a()) task2 = asyncio.create_task(b()) print...解释: 1、asyncio.run(main()),程序进入main()函数,开启事件循环 2、创建任务task1、task2并进入事件循环等待运行 3、输出准备开始 4、执行await task1,用户选择从当前主任务中切出...,运行await asyncio.sleep(1),从当前任务切出,事件调度器开始调度 b 6、b 开始运行,输出欢迎来到b!...,运行await asyncio.sleep(2),从当前任务切出 7、以上事件运行时间非常短(毫秒),事件调度器开始暂停调度 8、一秒钟后,a的sleep完成,事件调度器将控制权重新交给a,输出欢迎回到...上面的代码也可以这样写,将15到21行换成一行await asyncio.gather(a(), b())也能实现类似的效果,await asyncio.gather 会并发运行传入的可等待对象(Coroutine

3.2K10

python基础教程:异步IO 之编程例子

这样我们通过 await 运行了两个协程。 ? 从起止时间可以看出,两个协程是顺序执行的,总共耗时1+2=3秒。...(3)通过 asyncio.create_task() 函数并发运行作为 asyncio 任务(Task) 的多个协程。...当一个协程通过 asyncio.create_task() 被打包为一个 任务,该协程将自动加入程序调度日程准备立即运行。 create_task()的基本使用前面例子已经讲过。...它返回的task通过await来等待其运行完。如果,我们不等待,会发生什么?“准备立即运行”又该如何理解呢?先看看下面这个例子: ?...这是为什么呢? 我猜想是这样的:4个任务生成在前,第18行的sleep在后,事件循环的消息响应可能有个先进先出的顺序。后面深入asyncio的代码专门研究一下这个猜想正确与否。

76020

Python 自带异步队列的大坑

asyncio.create_task(producer(queue)) con = asyncio.create_task(consumer(queue)) await con...但如果你运行一下这段代码,你会发现一件很奇怪的事情,如下图所示: ? 当我们的消费者开始消费的时候,队列里面实际上已经有10条数据了!...是生产者里面的循环完全运行完成了,才开始运行的消费者! 如果在实际代码中,你的生产者生产了几百万条数据,那么此时所有数据全部都堆放在异步队列里面,很容易就把你的内存撑爆了! 那么这个问题要如何解决呢?...看到这里,可能有人会说,这仅仅是生产者先把异步队列堆满,才能进行消费,并没有什么本质区别啊,本质上还是先只有生产者运行,等他跑不动了(队列满了),消费者才能运行,还是没有实现并行啊。...=3) asyncio.create_task(producer(queue)) con = asyncio.create_task(consumer(queue)) await

5.7K20
领券