gpt4 book ai didi

python - 如何在 python 中克隆队列?

转载 作者:行者123 更新时间:2023-11-28 21:13:45 27 4
gpt4 key购买 nike

我有一段代码,其中有一个优先级队列,我正在尝试克隆以遍历,

import Queue as Q

import copy

q1 = Q.PriorityQueue()

def printQueue(q):
while not q.empty():
print (q.get()),
print ''

q1.put((5,'s'))
q1.put((2,'e'))
q1.put((0,'a'))
q1.put((0,'z'))
printQueue(copy.copy(q1))
print 'second'
printQueue(copy.copy(q1))

我在网上发现我可以使用 copy.copy 进行克隆。但是在我的代码中,它不起作用。当我第二次调用 prinQueue 时,优先级队列是空的。有人可以指出代码有什么问题吗?

最佳答案

如果你复制一个队列,它是行不通的。你得到完全相同的对象。

import Queue as Q
import copy
q1 = Q.PriorityQueue()
q2 = copy.copy(q1)
print repr(q2), repr(q1)

>> <Queue.PriorityQueue instance at 0x10568f2d8> <Queue.PriorityQueue instance at 0x10568f368>

从那里开始,您的 printQueue 语句实际上耗尽了 Queue。这就是为什么你再复制它是空的;您正在复制一个空队列。

如果要复制队列,可以使用Q.get()Q.put(),甚至Q.queue像这样

q1 = Q.PriorityQueue()
## .. enter items

q2 = Q.PriorityQueue()
for i in q1.queue: q2.put(i)

但是,您应该阅读另一个问题,它有几个很好的答案!特别是,您可能正在寻找一种数据结构,例如collections.deque,而不是同步的Queue,用于线程之间的安全通信>。参见 how to deepcopy a queue in python .

关于python - 如何在 python 中克隆队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32488533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com