让 Python 等待函数完成,然后再继续执行程序

Have Python wait for a function to finish before proceeding with the program

我有一个我写的 python 程序。这个 python 程序调用我也编写的模块中的一个函数,并向它传递一些数据。

程序:

def Response(Response):
    Resp = Response
def main():
   myModule.process_this("hello") #Send string to myModule Process_this function
   #Should wait around here for Resp to contain the Response
   print Resp

该函数对其进行处理并将其作为对主程序中 Response 函数的响应传回。

我的模块:

def process_this(data)
    #process data
    program.Response(data)

我检查过,所有数据都正确传递。我省略了所有导入和数据处理以使这个问题尽可能简洁。

我需要找到一些方法让 Python 在继续执行程序之前等待 resp 实际包含响应。我一直在寻找线程和使用信号量或使用队列模块,但我不是 100% 确定我将如何将它们合并到我的程序中。

这是一个使用队列和线程模块的有效解决方案。注意:如果你的任务是 CPU 绑定而不是 IO 绑定,你应该使用 multiprocessing 而不是

import threading
import Queue

def worker(in_q, out_q):
    """ threadsafe worker """
    abort = False
    while not abort:
        try:
            # make sure we don't wait forever
            task = in_q.get(True, .5)
        except Queue.Empty:
            abort = True
        else:
            # process task
            response = task
            # return result 
            out_q.put(response)
            in_q.task_done()
# one queue to pass tasks, one to get results
task_q = Queue.Queue()
result_q = Queue.Queue()
# start threads
t = threading.Thread(target=worker, args=(task_q, result_q))
t.start()
# submit some work
task_q.put("hello")
# wait for results
task_q.join()
print "result", result_q.get()