我有一个使用队列对象列表的类。我需要pickle这个类,包括保存在queue对象中的信息。例如:
import Queue
import pickle
class QueueTest(object):
def __init__(self):
self.queueList = []
def addQueue(self):
q = Queue.Queue()
q.put('test')
self.queueList.append(q)
obj = QueueTest()
obj.addQueue()
with open('pickelTest.dat','w') as outf:
pickle.dump(obj,outf)
返回错误
^{pr2}$有没有办法解决pickle队列对象的问题?在
我建议将
Queue.Queue
替换为collections.deque
。Queue
类用于线程之间的同步通信,因此当用作常规数据结构时,它将有一些不必要的开销。collections.deque
是一种更快的选择。(“deque”的发音是“deck”,意思是“双端队列”。)deque
类与Queue
类型有不同的API,但是在它们之间转换应该非常容易。用deque.append
代替Queue.put
,用deque.popleft
代替{Queue.empty
,只需使用一个deque
实例作为布尔值(就像测试空列表一样)。在deque
可选择实例:正如您对@Blckknght的评论,您不需要}来模拟
Queue.Queue
的同步特性。所以只要使用collections.deque
,Queue.Queue
类将其自身用作底层队列数据结构。您必须使用.appendleft
来模拟FIFOQueue.put
和{Queue.get
相关问题 更多 >
编程相关推荐