python自带的消息队列库Queue和多线程有什么关系?

我刚接触消息队列时,也是在网上百度搜索,发现好多博客写的有关消息队列Queue的时候,写的例子里都有多线程或者多进程的内容,把这些内容和Queue写在一起,我感觉如果是新手的话,是不太好理解的;因为从性能优化的角度来讲,消息队列也是为了分配任务,避免大量的并发请求过多过快的消耗服务器资源,从而优化产品的性能,这样的话,多线程或者多进程,又或者协程等等都是可以达到优化的目的,所以,我觉得在讲消息队列的内容时候,对于新手,还是不要涉及其他的内容比较好;
摘要由CSDN通过智能技术生成

python自带的消息队列库Queue和多线程有什么关系?

前言:

我刚接触消息队列时,也是在网上百度搜索,发现好多博客写的有关消息队列Queue的时候,写的例子里都有多线程或者多进程的内容,把这些内容和Queue写在一起,我感觉如果是新手的话,是不太好理解的;因为从性能优化的角度来讲,消息队列也是为了分配任务,避免大量的并发请求过多过快的消耗服务器资源,从而优化产品的性能,这样的话,多线程或者多进程,又或者协程等等都是可以达到优化的目的,所以,我觉得在讲消息队列的内容时候,对于新手,还是不要涉及其他的内容比较好;

在练习Queue的知识点时,我也有犯过些错误,比如说看了别人的博客,最后也实现了自己想要的效果,但是最后才反应过来,我写的代码,其实没有Queue也可以的,完全可以用Thread多线程来实现,而Queue的知识可以说是没有练习到,这也是我说上面一段话的背景;

多线程和消息队列有什么相同和不同?

相同点:都可以作为优化系统性能的方案;

不同点:两者优化性能的方式不同,打个比方如下:

1.比如用户访问登录接口,那么很多个用户同时访问该接口时,后台可以同一时刻为每一个用户单独起一个线程,让用户在最短时间内拿到登录结果,这也叫用户并发登录,这样对用户来说体验会好些,但是对系统来说,就很消耗资源,容易崩溃,这种场景用多线程比较合适(实际企业这样用的不多);

2.再比如,测试人员经常要运行自动化案例,有时运行几个小时都结束不了,而且测试化境很复杂不好搭建,不能提拱并发执行,这时,可以考虑用消息队列了,每个人都可以在下班前提交一个测试任务,先提交的任务先运行,按顺序执行任务,等上一个测试任务执行完,再执行下一个的任务,像这种不要求立刻得到结果的场景,就可以考虑用消息队列了,说到这里,如果有需要了解学习自动化测试平台开发的小伙伴,欢迎和我交流,可以搜索并关注公众号“测试运维”,一起进步!

3.最后,再打个比方来说明消息队列和多线程的区别,比如地铁站怎么处理客流高峰呢?一种方案是临时增加很多个刷卡通道并同时开放,使每个通道排队等候的人不多,这种方案可以让乘客很快进站,类似于多线程,这种方案对乘客来说是好事,减少了乘客的等待时间,但是对于地铁站来说就很难了,因为地铁站就那么大,不是想开几个通道就开几个,虽然技术上可以实现,但是不太现实;另一种方案,保持原有的刷卡通道个数不变,组织乘客排队刷卡进站,哪怕队已经排的很长很长,拐着弯排队,甚至是排到地铁站外面,只要大家都有序排队,最后都可以进站,这个方案就是类似消息队列,在队列管控上做改动,而不是在基础硬件设施上做改动,这种方案,对地铁站来说是好事,不用额外新建那么多通道,但是对乘客来说,等待的时间太长,体验不好;

一.先源码实现一下queue,参考网上的。

class Queue(object):
    def __init__(self, max_item):
        self.queue = []
        self.max_item = max_item

    def enqueue(<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值