0

我正在寻找如何在 python 中执行多线程(2 个线程)。

我想要其中之一是不断地读取串口。读取每一帧并将它们保存到数据库中。我已经做了一个脚本来做到这一点。

对于第二个,我希望它监听一个套接字端口。当它从该端口接收到一些东西时,我希望它暂停第一个线程,向串行端口写入一些东西并写入套接字。之后,取消暂停第一个线程并返回侦听套接字端口。

我认为最好的主意是在那一刻暂停一个线程从另一个线程读取串口,因为如果我在第一个线程中通过串口读取答案,我必须将读取的值传递给第二个线程,这更复杂,是不是吗?

我已经有了在串口上写的部分,并检查了一些关于套接字部分的教程,所以我对此没有任何问题。但我还没有找到任何关于暂停一个线程和另一个线程的信息,我认为这是不可能的。

在这种情况下我该怎么办?

编辑:询问共享变量:所以我可以声明一个全局变量并制作如下内容:

global1
global2
Thread 1:

while(global1 == 0)
    do whatever
global2 = 1

thread 2:
    wait socket
    if dataReceived: global1 = 1
    if global2 = 1 do whatever on serial port
    global2 = 0
    when finish global1 = 0

使用 2 个全局变量,我可以通知 thread1 停止进行下一次迭代,使用 global2,第二个线程知道何时不使用串行端口...

如何在 python 中声明共享变量?或者它只是另一个变量....

4

1 回答 1

0

我不确定您是否可以直接在进程之间共享对象,但是由于每个进程都可以与主进程共享对象,因此您可以使用主进程来回传递它们:

http://docs.python.org/2/library/multiprocessing.html#exchanging-objects-between-processes

于 2013-05-10T18:08:09.817 回答