我想弹出collections.deque
左边最多的limit
项。从Python中的双端队列左边弹出一个最多N个条目
def popAll(q, limit=None):
if limit is None:
result = list(q)
q.clear()
else:
result = []
try:
for _ in xrange(limit):
result.append(q.popleft())
except IndexError:
pass
return result
这似乎工作,但似乎......笨重。有没有更“pythonic”的方式? deque
对象不支持切片。
注:我的目的,因为我将要包装一个threading.RLock()
访问内部访问deque的,我不需要一个固有的线程安全的答案。
当您执行此操作时是否有其他线程正在从此双端队列中读取或写入数据?您是否希望多流行操作从其他读者的角度来看是原子的? –
我不需要线程安全;我正在用'threading.RLock'来包装它。 –