python: 如何实时获取调用函数的结果?

python: how to get result from a call functions in real time?

我想做的是实时获取调用函数的结果。 比如我想在真实的class模型中得到i的结果time.However,如果我使用return,我只能得到[=12=的结果]一次。

import threading

class model(object):
    """docstring for model"""
    def __init__(self):
        pass


    def func(self):  
        for i in range(1000):
            print('i',i)
            return i

class WorkThread(threading.Thread):  
    # trigger = pyqtSignal()  
    def __int__(self):  
        super(WorkThread,self).__init__()  

    def run(self):  
        model1=model()
        result = model1.func() #I want to get `i` from class model in real time,however return can only get once.
        print('result',result)

if __name__ == '__main__':
    WorkThread=WorkThread()
    WorkThread.start()
    for j in range(1000,2000):
        print('j',j)

有人有好主意吗?希望得到帮助。

您有多种选择;你可以:

  • 使用生成器函数,在迭代时生成结果。这要求 model1.func() 调用在 model1.func() 调用返回的生成器上循环。如果您不需要从另一个线程访问数据,请使用它。

  • 使用队列;在您生成结果时将 i 结果推入队列,另一个线程可以从队列中接收它们。