Devo ancora trovare una chiara spiegazione delle differenze tra Condition
e Event
classi nel modulo threading
. C'è un chiaro caso d'uso in cui uno sarebbe più utile dell'altro? Tutti gli esempi che riesco a trovare usano un modello produttore-consumatore come esempio, dove queue.Queue
sarebbe la soluzione più semplice.threading.Condition vs threading.Event
29
A
risposta
35
In poche parole, si utilizza una condizione quando i thread sono interessati ad attendere che qualcosa diventi vero, e, una volta che è vero, per avere accesso esclusivo ad alcune risorse condivise.
Mentre si utilizza un evento quando i thread sono solo interessati ad aspettare che qualcosa diventi realtà.
In sostanza, Condizione è un evento + blocco astratto, ma diventa più interessante se si considera che è possibile avere più condizioni diverse sullo stesso blocco sottostante. Quindi potresti avere condizioni diverse che descrivono lo stato della risorsa sottostante, il che significa che puoi svegliare i lavoratori che sono interessati solo a particolari stati della risorsa condivisa.
Quindi una condizione è un evento estratto + blocco? –
In sostanza si ... ma diventa più interessante se si considera che è possibile avere più condizioni diverse sullo stesso blocco sottostante. Quindi potresti avere condizioni diverse che descrivono lo stato della risorsa sottostante, il che significa che puoi svegliare i lavoratori che sono interessati solo a particolari stati della risorsa condivisa. – donkopotamus
'threading.Condition(). Wait()' un'attesa bloccata? – overexchange