python: как получить результат от вызова функций в реальном времени? - PullRequest
0 голосов
/ 06 мая 2018

То, что я хочу сделать, это получить результат от вызова функций в режиме реального времени. Например, я хочу получить результат 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)

У кого-нибудь есть хорошая идея? Надеюсь на помощь.

1 Ответ

0 голосов
/ 06 мая 2018

У вас есть несколько вариантов; Вы могли бы:

  • Используйте функцию генератора, чтобы получить результаты во время итерации. Для этого требуется, чтобы вызов model1.func() зацикливался на генераторе, возвращаемом вызовом model1.func(). Используйте это, если вам не нужен доступ к данным из другого потока.

  • Использовать очередь; отправка i результатов в очередь по мере их создания, и другой поток может получать их из очереди.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...