我只是想知道它是否可以在两个QThread之间传递数据。我已经知道如何在QThread Starts之前输入数据,然后调用run方法。 但我有一种情况,我使用QThread(A)从伺服电机控制器获取串行数据并使用主GUI显示它。我还运行另一个Qthread(B),它执行几个长进程(在Qtheard(B)中执行大约1000行代码)。 在执行QThread(B)的过程中,我想在QThread(A)中使用串行数据并将其记录在QThread(B)中。当QThread(B)准备好记录时,必须尝试将串行数据从QThread(A)传输到QThread(B)。
这样做的最佳方式是什么?我尝试过使用全局变量,但没有成功。还有哪些其他选择?
请事先感谢有人给我一些建议!
Sanka :)
答案 0 :(得分:1)
你可以使用Queue(只是一个例子):
from queue import Queue
from threading import Thread
# A thread that produces data
def producer(out_q):
while True:
# Produce some data
...
out_q.put(data)
# A thread that consumes data
def consumer(in_q):
while True:
# Get some data
data = in_q.get()
# Process the data
...
# Create the shared queue and launch both threads
q = Queue()
t1 = Thread(target=consumer, args=(q,))
t2 = Thread(target=producer, args=(q,))
t1.start()
t2.start()
更新:QThreads https://stackoverflow.com/a/25109185/1698180
的更具体示例