J'ai un seul processus Python qui utilise un port série (ressource unique) qui est géré en utilisant une instance d'une classe A. Il existe deux threads différents initialisés en utilisant des instances des classes B et C, qui utilisent constamment la ressource de port série via l'objet déjà créé.Python Comment partager un port série avec deux threads différents (Classe A, Classe B)
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()
Le problème est que les deux threads tentent d'accéder à la ressource série en même temps. Je pourrais utiliser plusieurs instances de la même classe A, en attachant Lock.acquire() et Lock.release() dans les parties sensibles.
Certains d'entre vous pourraient me pointer du bon côté?
Merci d'avance.
Merci pour le conseil, j'ai beaucoup de sens pour moi. – Jaime