Domanda

Ho due numeri interi nel mio programma; chiamiamoli "a" e "b". Vorrei aggiungere insieme e ottenere un altro numero intero di conseguenza. Si tratta di normali oggetti int Python. Mi sto chiedendo; Come faccio ad aggiungere insieme con Twisted? C'è una speciale funzione di performAsynchronousAddition da qualche parte? Ho bisogno di un Deferred? Che dire del reattore? È il reattore coinvolto?

È stato utile?

Soluzione

OK, per essere chiari.

ritorto non fa nulla di ??cpu compiti legati e per una buona ragione. non c'è modo di fare un lavoro legato calcolo andare qualsiasi più veloce riordinando sottocompiti; l'unica cosa che si potrebbe fare è aggiungere più risorse di calcolo; e anche che non avrebbe funzionato in pitone a causa di una sottigliezza della sua attuazione.

ritorto offre la semantica speciali e ciclo di eventi di movimentazione nel caso in cui il programma sarebbe diventato " bloccato " in attesa di qualcosa al di fuori se il suo controllo; più normalmente un processo in esecuzione su un'altra macchina e comunicare con il vostro processo contorto tramite una connessione di rete. Dal momento che si sarebbe in in attesa in ogni modo, contorto ti dà un meccanismo per ottenere più cose fatte nel frattempo. Vale a dire, contorta fornisce concorrenza per ??I / O compiti Bound

tl; dr: twisted è per il codice di rete. Tutto il resto è solo normale pitone.

Altri suggerimenti

Che ne dite di questo:

c = a + b

che dovrebbe funzionare, e non ha bisogno di essere fatto in modo asincrono (è abbastanza veloce).

Buona domanda, e Twisted (o Python) dovrebbero avere un modo per almeno deporre le uova "A + B" di a diversi nuclei (sul mio 8 core i7).

Purtroppo la Python GIL impedisce che ciò accada, il che significa che si dovrà aspettare, non solo per l'attività della CPU bound, ma per un core fare il lavoro, mentre il nucleo altri sette stanno facendo nulla.

Nota: Forse un esempio migliore sarebbe "una () + b ()", o anche "fatto (sqrt (a () ** B ())", ecc, ma il fatto importante è che al di sopra operazione si blocca un core e la GIL praticamente impedisce Python per fare qualsiasi altra cosa durante questa operazione, che potrebbe essere parecchi ms ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top