Python数据队列案例展示

Time will tell.


队列:

  • 先进先出(FIFO)表。


常用操作:

  • Enqueue:入队,即将数据写入队列末尾
  • Dequeue:出队,即将队列开头的元素从队列中删除并返回


应用场景:

队列通常用来实现消息的快速读写,即消息队列。消息队列的常用来解决:

  1. 提升系统的吞吐量:通过引入消息队列,将不是必须的业务逻辑异步处理,用户请求写入消息队列后即返回响应,而不必等待全部的业务逻辑完成,提高了cpu利用效率。
  2. 实现应用解耦:用户请求通常是由一系列子业务系统配合完成,引入消息队列,可以避免业务系统间直接的相互调用,从而实现应用解耦,各子系统间相互独立,降低系统复杂度。
  3. 流量削峰:类似秒杀的活动中,可以通过消息队列控制活动人数,消息队列满后,直接抛弃用户请求,缓解短时间内的高流量对服务器的压力。
  4. 消息通讯:利用消息队列高效的通讯机制,实现点对点通讯或聊天室。
  5. 日志处理:日志采集客户端将日志写入消息队列,日志处理服务器从读取消息队列中的日志,解决大量日志传输问题。


实现方式:

  • 链表实现:比较简单,不再赘述。

  • 数组实现:用数组实现一个队列,需要考虑元素出队后,数组位置单元循环利用的问题,即队列的循环数组实现。


用循环数组实现一个队列:

 from array import array

class arr_queue(object):
     def __init__(self, maxsize):
         self._array = array('i', range(maxsize))
         self._head = 0
         self._tail = 0
         self._length = 0
         self._maxsize = maxsize

     def enqueue(self, value):
         if self._length >= self._maxsize:
             raise Exception('queue is full')
         self._array[self._tail] = value
         self._length += 1
         self._tail += 1
         if self._tail >= self._maxsize:
             self._tail = 0
 
     def dequeue(self):
         if self._length <= 0:
             raise Exception('queue is empty')
         value = self._array[self._head]
         self._length -= 1
         self._head += 1
         if self._head >= self._maxsize:
             self._head = 0
         return value
 
     def __len__(self):
         return self._length

如果你对更多内容、及Python实例练习题、面试题、自动化软件测试感兴趣的话可以加入我们175317069一起学习喔。群里会有各项学习资源发放,更有行业深潜多年的技术人分析讲解。期待你的加入!

最后祝你能成为一名优秀的工程师!

欢迎【评论】、【点赞】、【关注】~

Time will tell.(时间会证明一切)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值