linux 单向队列,python 双向队列与单向队列

本文详细介绍了Python中的双向队列deque和线程安全的Queue类。deque提供了高效地从两端添加和移除元素的能力,而Queue则在多线程环境下确保了数据的安全交换。内容涵盖了deque的基本操作如append、appendleft、pop、popleft等,以及Queue的task_done、put、get等方法,展示了它们在并发编程中的应用。

2019独角兽企业重金招聘Python工程师标准>>>

6936d1565ae689371725cdb5fc51c415.png

5、双向队列(deque)

一个线程安全的双向队列

class deque(object):

"""

deque([iterable[, maxlen]]) --> deque object

Build an ordered collection with optimized access from its endpoints.

"""

def append(self, *args, **kwargs): # real signature unknown

""" Add an element to the right side of the deque. """

pass

def appendleft(self, *args, **kwargs): # real signature unknown

""" Add an element to the left side of the deque. """

pass

def clear(self, *args, **kwargs): # real signature unknown

""" Remove all elements from the deque. """

pass

def count(self, value): # real signature unknown; restored from __doc__

""" D.count(value) -> integer -- return number of occurrences of value """

return 0

def extend(self, *args, **kwargs): # real signature unknown

""" Extend the right side of the deque with elements from the iterable """

pass

def extendleft(self, *args, **kwargs): # real signature unknown

""" Extend the left side of the deque with elements from the iterable """

pass

def pop(self, *args, **kwargs): # real signature unknown

""" Remove and return the rightmost element. """

pass

def popleft(self, *args, **kwargs): # real signature unknown

""" Remove and return the leftmost element. """

pass

def remove(self, value): # real signature unknown; restored from __doc__

""" D.remove(value) -- remove first occurrence of value. """

pass

def reverse(self): # real signature unknown; restored from __doc__

""" D.reverse() -- reverse *IN PLACE* """

pass

def rotate(self, *args, **kwargs): # real signature unknown

""" Rotate the deque n steps to the right (default n=1).  If n is negative, rotates left. """

pass

def __copy__(self, *args, **kwargs): # real signature unknown

""" Return a shallow copy of a deque. """

pass

def __delitem__(self, y): # real signature unknown; restored from __doc__

""" x.__delitem__(y) <==> del x[y] """

pass

def __eq__(self, y): # real signature unknown; restored from __doc__

""" x.__eq__(y) <==> x==y """

pass

def __getattribute__(self, name): # real signature unknown; restored from __doc__

""" x.__getattribute__('name') <==> x.name """

pass

def __getitem__(self, y): # real signature unknown; restored from __doc__

""" x.__getitem__(y) <==> x[y] """

pass

def __ge__(self, y): # real signature unknown; restored from __doc__

""" x.__ge__(y) <==> x>=y """

pass

def __gt__(self, y): # real signature unknown; restored from __doc__

""" x.__gt__(y) <==> x>y """

pass

def __iadd__(self, y): # real signature unknown; restored from __doc__

""" x.__iadd__(y) <==> x+=y """

pass

def __init__(self, iterable=(), maxlen=None): # known case of _collections.deque.__init__

"""

deque([iterable[, maxlen]]) --> deque object

Build an ordered collection with optimized access from its endpoints.

# (copied from class doc)

"""

pass

def __iter__(self): # real signature unknown; restored from __doc__

""" x.__iter__() <==> iter(x) """

pass

def __len__(self): # real signature unknown; restored from __doc__

""" x.__len__() <==> len(x) """

pass

def __le__(self, y): # real signature unknown; restored from __doc__

""" x.__le__(y) <==> x<=y """

pass

def __lt__(self, y): # real signature unknown; restored from __doc__

""" x.__lt__(y) <==> xa new object with type S, a subtype of T """

pass

def __ne__(self, y): # real signature unknown; restored from __doc__

""" x.__ne__(y) <==> x!=y """

pass

def __reduce__(self, *args, **kwargs): # real signature unknown

""" Return state information for pickling. """

pass

def __repr__(self): # real signature unknown; restored from __doc__

""" x.__repr__() <==> repr(x) """

pass

def __reversed__(self): # real signature unknown; restored from __doc__

""" D.__reversed__() -- return a reverse iterator over the deque """

pass

def __setitem__(self, i, y): # real signature unknown; restored from __doc__

""" x.__setitem__(i, y) <==> x[i]=y """

pass

def __sizeof__(self): # real signature unknown; restored from __doc__

""" D.__sizeof__() -- size of D in memory, in bytes """

pass

maxlen = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default

"""maximum size of a deque or None if unbounded"""

__hash__ = None

deque

既然有双向队列,也有单项队列(先进先出 FIFO )

class Queue:

"""Create a queue object with a given maximum size.

If maxsize is <= 0, the queue size is infinite.

"""

def __init__(self, maxsize=0):

self.maxsize = maxsize

self._init(maxsize)

self.mutex = _threading.Lock()

self.not_empty = _threading.Condition(self.mutex)

self.not_full = _threading.Condition(self.mutex)

self.all_tasks_done = _threading.Condition(self.mutex)

self.unfinished_tasks = 0

def task_done(self):

self.all_tasks_done.acquire()

try:

unfinished = self.unfinished_tasks - 1

if unfinished <= 0:

if unfinished  0:

if not block:

if self._qsize() == self.maxsize:

raise Full

elif timeout is None:

while self._qsize() == self.maxsize:

self.not_full.wait()

elif timeout

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值