class Return_Thread_Value(object):
def __init__(self,target = None,args = (),**kwargs):
self._que = queue.Queue()
self._t = Thread(target = lambda q,arg1,kwargs1: q.put(target(*arg1,**kwargs1)),
args=(self._que,args,kwargs), )
self._t.start()
def Return_Value(self):
self._t.join()
return self._que.get()
Thread_1 = Return_Thread_Value(target = Walking_Inputs,args = (
WINDOW,CLOCK,Hero,FRAME,INTERACTING,TOP_SCREEN,POSITION_DATA,BACKGROUND,
FOREGROUND_OPAQUE,FOREGROUND_TRANSLUCENT,INPUT,INPUT_SHIFT,PROMPT_SHIFT,Input,
ENTERED))
INTERACTING,TOP_SCREEN,Input,ENTERED = Thread_1.Return_Value()
Thread_2 = Return_Thread_Value(target = Key_Inputs,args = (
WINDOW,ENTERED,PROMPT_SHIFT,INPUT,INPUT_SHIFT,CAPITAL,Input))
ENTERED,PROMPT_SHIFT,INPUT,INPUT_SHIFT,CAPITAL,Input = Thread_2.Return_Value()
尝试运行两个函数,一个可以让您在村庄中走来走去,另一个可以接受键输入,这两个函数都在运行,但是我不确定是否返回了值。
最佳答案
它们的线程将各自具有自己的作用域,以将数据传递回其父线程,最简单的方法是定义任何对象,例如dict return_value = {}
,并将其作为arg传递给您的线程。
将您想返回的值设置为字典中的键(return_value['thread1return']='something'
),那么您应该可以在父线程中访问它
关于python - 如何从多线程中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58866092/