我正在寻找如何在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中声明共享变量?或者它只是另一个变量......
答案 0 :(得分:0)
我不确定您是否可以在进程之间直接共享对象,但由于每个进程都可以与主进程共享对象,因此您可以使用主进程来回传递它们:
http://docs.python.org/2/library/multiprocessing.html#exchanging-objects-between-processes