python - 如何从多线程中获取值?

标签 python multithreading pygame

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/

相关文章:

python - Windows 上的 Gcloud 命令(使用 git bash)正在记录错误 : WindowsApps/python3: permission denied

python - 如何将 pandas DataFrame 结果转换为用户定义的 json 格式

python - 如何在python中的os.kill()函数之后执行finally block

ASP.net 运行 Thread 类 Foreground-Threads

java - Java中main()方法和主线程有什么关系?

python - 在 Mac 上安装 pygame 时出现 sdl.h 错误?

osx-snow-leopard - 无法让 python 在 OS X 上读取我的 .txt 文件

c++ - 结合使用 std::atomic<bool> 和 std::mutex 的正确性

python - Pygame Python 窗口停止响应

python - 在 Pygame 中后台 blit 代码中创建的 TypeError