2014-10-21 14 views
8

Nel Strange Loop presentation on Transducers Rich Hickey cita a un concetto in una tabella chiamata "parallelo".Qual è il concetto "parallelo" nei trasduttori di Rich Hickey Strange Loop talk?

enter image description here

Si può facilmente vedere examples of seqs and into and channels usando transducers.

Ora è possibile calcolare le Osservabili are talking about RxJava.

La mia domanda è Qual è il concetto "parallelo" nei trasduttori di Rich Hickey Strange Loop talk? È un elenco di futures o pmap o qualcos'altro?

risposta

11

Ci sono state alcune considerazioni sulla creazione di processi trasducibili paralleli. Questo viene tracciato come CLJ-1553. Al momento non stiamo pianificando di affrontarlo in Clojure 1.7, ma vorremmo fare qualcosa in Clojure 1.8.

È ora possibile impostare un riduttore che utilizza un trasduttore come fase di riduzione inferiore (insieme a fns combinatori più tradizionali) ma idealmente saremmo in grado di sfruttare il concetto "auto-riducibile" incarnato da vettori persistenti e mappe per supportare transduce in parallelo in modo più naturale.

È molto probabile che in questo momento emerga come una sorta di funzione di predire, ma ancora molto da decidere.

Un'area problematica è quella relativa alle forme KV: i riduttori hanno fatto alcune scelte là che sono difficili o sconvenienti con i trasduttori, quindi è necessario intervenire.

7

Il concetto è semplicemente quello di eseguire il calcolo in parallelo. Esistono diverse implementazioni possibili:

  1. clojure.core.reducers/fold, che è simile al reduce, tranne che deve essere utilizzato con funzioni di riduzione associativa ed è sostenuta da un protocollo che sfrutta la struttura ad albero di varie strutture di dati Clojure per parallelizzare la sforzo computazionale. Non è ancora compatibile con i trasduttori, ma è compatibile con i riduttori e sembra che una versione abilitata per trasduttore sia destinata ad arrivare alla fine.

  2. Le versioni recenti di core.async con supporto trasduttore esportano una funzione denominata pipeline che consente di parallelizzare le trasformazioni basate su trasduttore canale → canale.

Problemi correlati