我在读取多处理队列时遇到问题,正在从另一个模块调用读取队列的函数。
下面的是包含启动运行function_to_get_data
的线程的函数的类。该类驻留在自己的文件中,我将其称为one.py. function_to_get_data
位于另一个文件two.py中,并且是一个无限循环,它将数据放入队列(此代码片段为此向下)。它还包含读取队列的功能。队列q
在开始时全局定义。
import multiprocessing
from two import function_to_get_data
q = multiprocessing.Queue()
class Poller:
def startPoller(self):
pollerThread = multiprocessing.Process(target=module_to_get_data,args=(q,))
pollerThread.start()
def getPoller(self):
if q.empty():
print "queue is empty"
else:
pollResQueue = q.get()
q.put(pollResQueue)
return pollResQueue
if __name__ == "__main__":
startpoll = Poller()
startpoll.startPoller()
以下是function_to_get_data
:
def module_to_get_data(q):
while 1:
# performs actions #
q.put(data_from_actions)
我有另一个模块,three.py,它需要队列中的数据并通过从初始类调用该函数来请求它:
from one import Poller
externalPoller = Poller()
data_this_module_needs = externalPoller.getPoller()
问题是队列总是空的。
我应该补充说,three.py中的函数也被一个网页中的帖子称为one.py中的一个帖子:
def POST(data):
data = web.input()
if data == 'Start':
thread_two = multiprocessing.Process(target= function_in_three_py, args=(q,))
thread_two.start()
如果我使用python命令行并输入两个Poller函数并调用它们,我从队列中获取数据没问题。