python 并列,python异步任务队列
Python教程今天介绍双向队列。
虽然你可以用Python list的。追加和。pop方法来模拟堆栈或队列,删除链表的第一个元素或者在第一个元素之前添加一个新元素是非常耗时的。因为列表中的所有元素都需要向后移动。
Python的双向队列是使用collections.deque类实现的。这是一个线程安全的类,可以从两端快速添加或删除元素。
德克/dk/
您还可以使用collections.deque类来实现缓存。首先指定缓存队列的大小,然后从队列头删除过期的元素,并在队列尾添加新元素。
卢西亚诺拉马尔霍举了一个例子来说明双向队列的基本用法。
从集合导入队列
dq=deque(范围(10),maxlen=10)
logging.info(dq - %s ,dq)
dq.rotate(3)
logging.info(dq - %s ,dq)
dq.rotate(-4)
logging.info(dq - %s ,dq)
dq.extend([11,22,33])
logging.info(dq - %s ,dq)
dq.extendleft([10,20,30,40])
Logging.info(dq-%s ,dq)复制代码运行结果:
INFO - dq - deque([0,1,2,3,4,5,6,7,8,9],maxlen=10)
INFO - dq - deque([7,8,9,0,1,2,3,4,5,6],maxlen=10)
INFO - dq - deque([1,2,3,4,5,6,7,8,9,0],maxlen=10)
INFO - dq - deque([4,5,6,7,8,9,0,11,22,33],maxlen=10)
info-dq-dequee([40,30,20,10,4,5,6,7,8,9],maxlen=10)复制代码maxlen是dequee的可选参数,用于指定队列容量,即可以放多少个元素。rotate()方法可以旋转队列。它有一个自变量n,当n为0时,队列中从最右边开始的n个元素将被移到左边。当n为0时,队列中从最左边开始的n个元素将被移动到右边。extend()方法可以向队列中添加新元素。它接受一个列表作为参数,并将列表中的所有元素添加到队列中。新元素被放在队列的右侧。如果您在添加新元素时发现队列已满,则位于队列头部的元素将被自动删除。extendleft(iter)方法将新添加的元素放在队列的左侧。其他特性与extend()方法相同。双向排队也不是完美的。如果从队列中间删除元素,会比较慢,因为只针对队列的头和尾操作进行了优化。
相关免费学习推荐:python教程(视频)
以上就是说说Python的双向队列的细节。更多信息请关注盛行IT软件开发工作室的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。