QThreads Python - 通信
QThreads Python - Communicating
我只是想知道是否可以在两个 QThread 之间传递数据。我已经知道如何在 QThread 启动之前输入数据,然后调用 运行 方法。
但是我有一种情况,我使用 QThread (A) 从伺服电机控制器获取串行数据并使用主 GUI 显示它。我还 运行 另一个 Qthread (B),它执行几个长进程(在 Qtheard (B) 中执行大约 1000 行代码)。
QThread(B)执行到一半,我想使用QThread(A)中的串行数据并将其记录在QThread(B)中。当 QThread (B) 准备好记录时,必须尝试将串行数据从 QThread (A) 传输到 QThread (B)。
最好的方法是什么?我试过使用全局变量,但没有成功。还有哪些其他选项可用?
请有人给我一些建议,在此先感谢!
散卡 :)
你可以为此使用 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 示例
我只是想知道是否可以在两个 QThread 之间传递数据。我已经知道如何在 QThread 启动之前输入数据,然后调用 运行 方法。 但是我有一种情况,我使用 QThread (A) 从伺服电机控制器获取串行数据并使用主 GUI 显示它。我还 运行 另一个 Qthread (B),它执行几个长进程(在 Qtheard (B) 中执行大约 1000 行代码)。 QThread(B)执行到一半,我想使用QThread(A)中的串行数据并将其记录在QThread(B)中。当 QThread (B) 准备好记录时,必须尝试将串行数据从 QThread (A) 传输到 QThread (B)。
最好的方法是什么?我试过使用全局变量,但没有成功。还有哪些其他选项可用?
请有人给我一些建议,在此先感谢!
散卡 :)
你可以为此使用 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 示例