在一次执行每件事情时,使用队列模块通过线程发送或接收数据非常容易,但我不知道如何将数据发送到线程,然后正确地期望返回
在下面的示例中,我希望向线程发送一些东西以便进行处理,然后获取结果,但是main函数中的t.queue.get()
接收刚才发送的内容,而不是等待线程返回。我怎样才能避开它
#!/usr/bin/env python3
from threading import Thread
from queue import Queue
class MyThread(Thread):
queue:Queue
def __init__(self, *args, **kwargs):
super().__init__()
self.queue = Queue()
self.daemon = True
# receives a name, then prints "Hello, name!"
def run(self):
while True:
val = self.queue.get()
if not val:
break
self.queue.put(f'Hello, {val}!')
def main():
t = MyThread()
t.start()
# sends string to thread
t.queue.put('Jurandir')
# expects to receive "Hello, Jurandir!",
# but "Jurandir" is immediately returned
ret = t.queue.get()
print(ret)
if __name__ == '__main__':
main()
问题是,您正在从队列中立即获得所谓的结果,而工作人员仍然没有添加结果。您可以分为“输入队列”和“结果队列”。然后在主线程中等待,直到队列中有一些输出
相关问题 更多 >
编程相关推荐