python asyncio和celery_python之asyncio三种应用方法

1、直接使用asyncio.run方法

2、同步的效果,用await调用函数

3、创建任务(asyncio.create_task),并发运行任务(await asyncio.gather)

import asyncio

#第一种

async def aa():

print("我们的门又坏了")

await asyncio.sleep(2)

print("怎么办啊")

asyncio.run(aa())

# 第二种 同步的效果

async def fun1():

print("增强体育锻炼,提高免疫力")

await asyncio.sleep(3)

print("才能保证身体健康,诸事顺利")

async def fun2():

await asyncio.sleep(5)

print("这个周末天气不错")

await asyncio.sleep(8)

print("可是你就是不想出去")

async def min():

await fun1()

await fun2()

if __name__ == "__main__":

asyncio.run(min())

# # 第三种并发

# 吃鱼丸

arr = []

async def produce():

for i in range(100):

await asyncio.sleep(1)

arr.append(i)

print("小明放了一个鱼丸,现在锅里还有%s个鱼丸"%len(arr))

async def consumer():

while True:

await asyncio.sleep(2) #很关键

if len(arr)>=10: #各一个判断条件

arr.pop()

print("mony吃了一个鱼丸,现在锅里还有%s个鱼丸"%len(arr))

async def main():

t1 = asyncio.create_task(produce()) #创建任务

t2 = asyncio.create_task(consumer())

await asyncio.gather(t1,t2) #并发运行任务

asyncio.run(main()) #调用函数main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`asyncio` 和 `Celery` 都是 Python 中用于异步编程的工具,但它们在用途和设计上有所不同。 **asyncio(异步I/O):** - 异步IO库,它是 Python 标准库的一部分,主要侧重于单线程并发处理,适合于 I/O 密集型任务,比如网络请求、文件读写等。通过使用异步/await语法,`asyncio`可以让代码顺序执行,但底层会利用事件循环和回调来管理多个任务并发执行,提高程序响应速度。 - 异步IO适合于对实时性要求较高的场景,例如实时聊天应用或Web服务器。 - asyncio 任务通常是由程序自己启动和管理的。 **Celery:** - 是一个分布式任务队列系统,它基于消息传递模型,能够将耗时的、复杂的、可能需要跨多个机器的任务异步地添加到队列中。Celery 支持多种消息队列如RabbitMQ、Redis等。 - 它的核心是将工作分解为可独立执行的单元,并通过工人(worker)在后台执行这些任务。这使得开发者可以专注于业务逻辑,而无需担心任务调度和失败处理。 - Celery 提供了丰富的错误处理和监控工具,以及跨语言支持,可以与其他语言的消费者进行交互。 - 适用于需要高可用性和可靠性的场景,比如批量数据处理、邮件发送、爬虫等。 **区别总结:** 1. asyncio 主要是针对单机、本地的、轻量级的异步编程,而 Celery 更关注分布式任务的管理和执行。 2. asyncio 更注重单个应用程序内部的并发优化,Celery 则是解决跨进程、跨主机的异步任务分发。 3. 使用 asyncio,程序员需要自行管理任务的调度和错误处理,Celery 提供了更完整的任务管理解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值