Domanda

Sarebbe possibile creare un cluster Python, scrivendo un server Telnet, quindi telnetando i comandi e l'output avanti e indietro? Qualcuno ha avuto un'idea migliore per un cluster di calcolo Python? PS. Preferibilmente per Python 3.x, se qualcuno sa come.

È stato utile?

Soluzione

Il wiki di Python ospita un elenco molto completo di Librerie e strumenti di calcolo del cluster Python . Potresti essere particolarmente interessato a Parallel Python .

Modifica: Esiste una nuova libreria che è particolarmente efficace nel clustering: execnet . È piccolo e semplice. E sembra avere meno bug rispetto, diciamo, al modulo standard multiprocessing .

Altri suggerimenti

Puoi vedere la maggior parte dei pacchetti di terze parti disponibili per Python 3 elencati qui ; rilevante per il calcolo dei cluster è mpi4py - la maggior parte degli altri strumenti di calcolo distribuito come pyro sono ancora solo Python-2, ma MPI è uno standard leader per il calcolo distribuito del cluster e sto esaminando bene (non ho ancora esperienza diretta con mpi4py con Python 3, ma credo che sia una buona implementazione).

L'alternativa principale è la moltiplicata di Python a>, che si ingrandisce abbastanza bene se non si ha interesse a interfacciare nodi esistenti che rispettano gli standard MPI ma che potrebbero non essere codificati in Python.

Non c'è un vero valore aggiunto nel rotolare il tuo (come dice Atwood, non reinventare la ruota, a meno che il tuo scopo non sia solo quello di capire meglio le ruote! -) - usa una delle soluzioni solide, testate e diffuse, già testato, eseguito il debug e ottimizzato per tuo conto! -)

Guarda in questi

http://www.parallelpython.com/

http://pyro.sourceforge.net/

Ho usato entrambi ed entrambi sono eccellenti per il calcolo distribuito
per un elenco più dettagliato delle opzioni vedere http://wiki.python.org/moin/ParallelProcessing

e se vuoi eseguire automaticamente qualcosa su una macchina remota, un'alternativa migliore a telnet è ssh come in http: // pydsh .sourceforge.net /

Che tipo di cose vuoi fare? Potresti voler dare un'occhiata a hadoop . Il backend, heavy lifting, viene eseguito in Java, ma ha un'interfaccia Python, quindi puoi scrivere script Python per creare e inviare l'input, nonché elaborare i risultati.

Se devi scrivere script amministrativi, dai un'occhiata anche alla ClusterShell anche la libreria Python, o / e il suo shell parallela clush . È utile anche per gestire set di nodi ( man nodeset ).

Penso che IPython.parallel è la strada da percorrere. L'ho usato ampiamente nell'ultimo anno e mezzo. Ti consente di lavorare in modo interattivo con tutti i nodi di lavoro che desideri. Se sei su AWS, StarCluster è un ottimo modo per far funzionare IPython.parallel in modo rapido e semplice con tutti i nodi EC2 che puoi permetterti. (Può anche installare automaticamente Hadoop e una varietà di altri strumenti utili, se necessario.) Ci sono alcuni trucchi per usarlo. (Ad esempio, non si desidera inviare grandi quantità di dati tramite l'interfaccia IPython.parallel stessa. Meglio distribuire uno script che eliminerà blocchi di dati singolarmente su ciascun motore.) Ma nel complesso, l'ho trovato a essere un modo straordinariamente semplice per eseguire l'elaborazione distribuita ( MODO meglio di Hadoop!)

" Sarebbe possibile creare un cluster python "

Sì.

Adoro le domande sì / no. Qualcos'altro che vuoi sapere?

(Nota che Python 3 ha ancora poche librerie di terze parti, quindi potresti voler rimanere con Python 2 al momento.)

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