【问题标题】:python: how to get result from a call functions in real time?python:如何实时从调用函数中获取结果?
【发布时间】:2018-05-06 12:18:02
【问题描述】:

我想做的是实时从调用函数中获取结果。 比如我想实时获取类模型中i的结果。但是如果我使用return,我只能得到一次i的结果。

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)

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

【问题讨论】:

    标签: python multithreading call


    【解决方案1】:

    您有多种选择;你可以:

    • 使用生成器函数,在迭代时生成结果。这要求model1.func() 调用循环通过model1.func() 调用返回的生成器。如果您不需要从其他线程访问数据,请使用此选项。

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

    【讨论】:

      猜你喜欢
      • 2013-05-06
      • 2016-09-11
      • 2016-01-16
      • 2021-12-28
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 2022-10-23
      相关资源
      最近更新 更多