Python 在多个控制台中调试多个处理队列
我希望在多个控制台中与多处理队列数据交互,如下所示:Python 在多个控制台中调试多个处理队列,python,multithreading,debugging,multiprocessing,Python,Multithreading,Debugging,Multiprocessing,我希望在多个控制台中与多处理队列数据交互,如下所示: #test.py import multiprocessing global queue queue = multiprocessing.Queue() #PYTHON CONSOLE 1 from test import queue queue.put("This is console 1") #PYTHON CONSOLE 2 from test import queue print queue.get() #"This is con
#test.py
import multiprocessing
global queue
queue = multiprocessing.Queue()
#PYTHON CONSOLE 1
from test import queue
queue.put("This is console 1")
#PYTHON CONSOLE 2
from test import queue
print queue.get() #"This is console 1"
但这不起作用。我遗漏了什么?如果我正确理解了您的意图,这就不起作用了。我假设“console”是指Python交互式提示符
队列
对象,并在其上放置一些内容进程
对象创建的。您在其中创建了一个队列
对象,但该对象与在“控制台1”中创建的对象不同。你试图从它那里得到一些东西,但是你什么也得不到,因为它上面什么也没有放。(它们都导入test.py
这一事实与此无关。)队列
对象并不是用来作为与进程
对象无关的进程的通信通道。例如,请参见以下示例:
现在介绍如何使用
process
创建第二个进程。通过process
创建的p
流程与原始流程共享相同的q
队列。谢谢!那么,有没有办法在p.start()之后看到“q”的值呢。在我的应用程序中,p.start()运行服务器,这样我就不能使用同一个交互式控制台。您可以打开一个日志文件并将值写入该文件。服务器通常就是这样工作的。
from multiprocessing import Process, Queue
def f(q):
q.put([42, None, 'hello'])
if __name__ == '__main__':
q = Queue()
p = Process(target=f, args=(q,))
p.start()
print q.get() # prints "[42, None, 'hello']"
p.join()