在python中暂停其他一个线程

时间:2013-05-10 15:40:36

标签: python multithreading pausing-execution

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

我希望其中一个人不断阅读串口。读取每一帧并将其保存到数据库中。我已经完成了一个脚本来执行此操作。

对于第二个,我想让它听一个套接字端口。当它从该端口接收到某些内容时,我希望它暂停第一个线程,将某些内容写入串口并写入套接字。之后,取消暂停第一个线程并返回侦听套接字端口。

我认为最好的想法是暂停其中一个线程来读取串口,因为如果我在第1个线程中通过串口读取答案,我必须将值读取传递给第二个线程,它更多很复杂,不是吗?

我已经在串口上编写了一部分,并检查了一些插件部分的教程,所以我没有遇到任何问题。但我没有发现任何关于暂停一个线程的信息,我认为这是不可能的。

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

编辑:询问共享变量:我可以声明一个全局变量并制作类似的东西:

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中声明共享变量?或者它只是另一个变量......

1 个答案:

答案 0 :(得分:0)

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

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