QThreads Python - 沟通

时间:2015-08-31 14:18:03

标签: python user-interface qthread

我只是想知道它是否可以在两个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 :)

1 个答案:

答案 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

的更具体示例