import queue, threading
def getFromQueue(myQueue):
while True:
print(myQueue.get())
def putInQueue(myQueue):
while True:
putString=... #code that provides values
myQueue.put(putString)
for msg in msgList:
myQueue=queue.Queue()
threading.Thread( target=getFromQueue, args=(myQueue, ) ).start()
threading.Thread( target=putInQueue, args=(myQueue, ) ).start()
我的目标是让每对(getFromQueue和putInQueue)线程在一个循环中共享一个唯一的队列。当我将myQueue重新分配给新队列对象时,旧队列对象会发生什么情况?每个线程是否仍然使用我生成线程时传递的原始队列对象,还是所有现有线程都更新为指向新的/最新的线程,并且所有线程都共享一个队列对象
在为全局
myQueue
分配一个新值之前,Queue
的每个实例都会获得对它的两个引用:将myQueue
参数分配给getFromQueue
,将myQueue
参数分配给putInQueue
。仅当对象的最后一次引用解除绑定时,对象才会被销毁新赋值
myQueue = queue.Queue()
对Queue
的前一个实例的唯一影响是其引用计数将从3减少到2一旦为
Queue
的给定实例执行函数的两个线程都退出,则可以收集该实例。当本地myQueue
超出范围时,退出的第一个线程将导致引用计数从2减少到1;第二个将导致引用计数从1减少到0相关问题 更多 >
编程相关推荐