Sto provando a scrivere una classe python utilizzando l'elaborazione/threading parallela per la lettura di due porte seriali (/ dev/ttyS1 e/dev/ttyS2). Entrambe queste porte funzionano a una velocità di trasmissione di 19200 e sono costantemente attive. Ho usato pySerial per questo scopo.Python thread multipli/processi multipli per la lettura di porte seriali
Entrambe le operazioni di lettura devono essere eseguite in modo continuo e simultaneo. Mi chiedo se dovrebbe utilizzare la libreria di thread o la libreria di threading o la libreria di multiprocessing. Sono solo preoccupato a causa del blocco dell'interprete globale che non offre una vera capacità di threading per operazioni di I/O pesanti. Ma se il blocco dell'interprete globale non mi riguarda, userò il modulo threading/thread. Comunque se lo fa, dovrei compilare le librerie di multiprocessing di Python perché questo è su un sistema embedded.
Quindi il mio codice avrebbe in genere thread1 o process1 = lettura ttyS1 e scrittura su un buffer dopo l'esecuzione di alcune operazioni stringa sulle righe di lettura. thread2 o process2 = lettura ttyS2 e scrittura su un altro buffer dopo aver eseguito alcune operazioni stringa sulle righe di lettura. Altre funzioni ecc. Questi buffer sono ulteriormente utilizzati da altre parti nel codice.
Inoltre il multiprocessing in python richiede più core/cpus?
Grazie per la lettura!
Grazie per le informazioni su GIL in fase di rilascio. L'uso del sistema embedded sarà su una CPU a 550 MHz con architettura arm5tel. Immagino che dovrei solo fare un po 'di benchmarking con diversi set up e vedere quanto ne posso uscire. Grazie anche per il video malato dargli un'occhiata! – kal