Python多处理队列:从另一个模块读取队列

时间:2015-06-04 16:56:43

标签: python multithreading queue

我在读取多处理队列时遇到问题,正在从另一个模块调用读取队列的函数。

下面的

是包含启动运行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函数并调用它们,我从队列中获取数据没问题。

0 个答案:

没有答案