小编Jai*_*ime的帖子

Python如何与两个不同的线程共享串行端口(A类,B类)

我有一个使用串口(唯一资源)的Python进程,它使用类A的实例进行管理.使用类B和C的实例初始化了两个不同的线程,它们不断使用串口资源反对已经创造了.

import threading

Class A(threading.Thread):
    #Zigbee serial port handler
    def __init__(self,dev):
        #something here that initialize serial port
    def run():
        while True:
            #listening serial interface
    def pack(self):
        #something
    def checksum(self):
        #something
    def write(self):
        #something

Class B(threading.Thread):
    def __init__(self,SerialPortHandler):
        self.serialporthandler=SerialPortHandler
    def run(self)
        while True:
            #something that uses self.serialporthandler

Class C(threading.Thread):
    def __init__(self,SerialPortHandler):
        self.serialporthandler=SerialPortHandler
    def run(self)
        while True:
            #something that uses self.serialporthandler

def main():
    a=A('/dev/ttyUSB1')
    b=B(a)
    b.start()
    c=C(a)
    c.start()

if __name__=='main':
    while True:
        main()
Run Code Online (Sandbox Code Playgroud)

问题是两个线程都试图同时访问串行资源.我可以使用同一个类A的几个实例,在敏感部分附加Lock.acquire()和Lock.release().

你们有些人能指出我的正确方法吗?

先感谢您.

python multithreading semaphore

2
推荐指数
1
解决办法
8603
查看次数

标签 统计

multithreading ×1

python ×1

semaphore ×1