【发布时间】:2020-12-27 23:30:50
【问题描述】:
我想在另一个线程中使用一个线程的结果(返回值)。
例子:
def foo():
return "foo"
def bar():
return "bar"
thread_foo = threading.Thread(target = foo)
thread_bar = threading.Thread(target = bar)
thread_foo.start()
thread_bar.start()
我想要做的是使用函数foo的输出并在函数bar中使用它。
我阅读了文档,但不幸的是没有找到有用的东西。
【问题讨论】:
-
您可以使用队列在线程之间传递数据docs.python.org/3/library/queue.html 如果您使用多处理,您可以使用管道代替docs.python.org/3/library/…
-
我修正了主题中的拼写错误,并修正了代码中的两个语法错误。在您寻求帮助之前,请至少尝试运行您的程序。线程共享内存,因此两个线程都可以访问的任何变量都可以用于交换数据。您使用队列来管理并发访问。
-
如果您需要另一个线程中的一个线程的结果 - 所以一个线程必须等待另一个线程 - 那么线程可能没有意义,更简单的是
bar(foo())。最终正常运行第一个函数result = foo()和后来的Thread(target=bar, args=(result,)。或创建函数def other(): bar(foo())并在Thread(target=other)中运行
标签: python python-3.x multithreading python-multithreading