我想使用来自多个线程和模块的共享队列。我有以下 Python 代码:
# moda.py
import queue
import modb
q = queue.Queue()
def myPut(x):
q.put(x)
def main():
print('moda:', str(id(q)))
modb.go()
q.get()
if __name__ == '__main__':
main()
和
# modb.py
import moda
import threading
def something():
print('modb:', str(id(moda.q)))
moda.myPut('hi')
def go():
threading.Thread(target = something).start()
something
在线程 1 上somethingElse
被调用,在线程 2 上被调用。这两种方法的地址q
不同 - 这就是调用get
永远不会返回的原因。我怎样才能避免这种情况?是因为循环导入还是因为多线程?