Sto per avviare un programma utilizzando Python che esegue principalmente il polling, leggerà costantemente dalla porta seriale (tramite PySerial
) e leggerà da un descrittore di file che cambierà da tempo a tempo. Ho iniziato a esaminare il modulo threading
ma poi ho continuato a trovare i suggerimenti more e more per l'utilizzo del modulo multiprocessing
.thread vs. process in Python
Non sono esperto in Python, proveniente da uno sfondo prevalentemente C. Quali sono i vantaggi tecnici di un approccio thread in Python?
In C, i thread condividono i dati e devono configurare un IPC per comunicare, che sembra essere lo stesso per Python?
mio caso d'uso:
Main process (or thread?) -
start & initialize
|
V
spaw child----------------------> start & initialize
| |
V V
while (1) <------------+ wait for data<------+
| | | |
V | V |
read file descriptors | read from |
| | serial port<-----+ |
V | | | |
value changed? ------No--+ V | |
| ^ message done?--No-+ |
V | | |
Report change------------+ V |
over serial alert parent---------+
Stavo pensando discussioni, in quanto renderà la condivisione dei dati ottenuto su seriale più facile, e possono avere una maniglia condiviso alla porta seriale. Ha senso, o sto pensando erroneamente da un punto di vista pitonico?
Il multiprocessing è un modo (IMHO piuttosto goffo) di aggirare il GIL. In questo caso, penso che 'threading' sia la strada da percorrere. – mgilson
@Downvoter - Potrei avere una ragione per cui senti questa domanda: "non mostra uno sforzo di ricerca, non è chiaro o non è utile"? – Mike