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
结果推入队列,另一个线程可以从队列中接收它们。
我想做的是实时获取调用函数的结果。
比如我想在真实的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
结果推入队列,另一个线程可以从队列中接收它们。