[Python] multiprocessing

2009-12-17 Per discussione Ernesto
Ciao a tutti,

tempo fa ho iniziato una discussione sul multi-threading da cui è  
emerso che per lanciare più threads con python per aumentare le  
prestazioni è più conveniente utilizzare la libreria multiprocessing.  
Tuttavia no so se la mia scelta è sensata o meno. Ho a disposizione  
più di un processore multi-core.
Il mio script effettua un loop su una lista di file ed esegue per ogni  
iterazione una specifica funzione su ogni file, per esempio:

miaLista=[file1,file2,file3]
for file in miaLista:
miaFunzione(file)

Vorrei poter lanciare la mia funzione sulla lista sfruttando più  
processi. Se scelgo di avviare 2 processi, i primi due file della  
lista vengono analizzati. Come faccio a dire allo script di continuare  
ad eseguire la funzione sul file successivo una volta che uno dei  
primi due processi è terminato?

Grazie in anticipo,

Ernesto
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] efficiente data storage

2009-12-17 Per discussione Ernesto




Leggendo qualcosa in merito sembra possa essere la soluzione giusta.
Tuttavia, non saprei come utilizzarlo in python, ovvero mi  
piacerebbe avere

qualche esempio concreto.
Dove posso vedere (ho saltato qualcosa nel link di sopra)?


Allora, non l'ho mai usato personalmente, mi era solo venuto in mente
mentre leggevo la tua richiesta.
Per quanto riguarda il modulo python, lo trovi qui:
http://github.com/andymccurdy/redis-py/.

Nel README del modulo sta scritto:

Documentation is in redis.py as docstrings and doctests. You can  
also view the

Redis API at http://code.google.com/p/redis/wiki/CommandReference;



Grazie mille per il suggerimento. Sono riuscito a far funzionare il  
tutto. Il sistema è abbastanza potente anche se un po' lento nella  
fase di upload o almeno per le mie finalità.


Ernesto ___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] efficiente data storage

2009-12-17 Per discussione Marco Dalla Stella
Il 17 dicembre 2009 12.27, Ernesto e.pica...@unical.it ha scritto:
 Grazie mille per il suggerimento. Sono riuscito a far funzionare il tutto.
 Il sistema è abbastanza potente anche se un po' lento nella fase di upload o
 almeno per le mie finalità.

Prego, figurati.
Per quanto riguarda la lentezza in upload, prova a contattare
Salvatore Sanfilippo (antirez, lo sviluppatore di Redis) magari
riuscite insieme ad individuare il collo di bottiglia, se ce fosse
uno.

Saluti,
-- 
Marco Dalla Stella
web: http://thediracsea.org
twitter: http://twitter.com/kra1iz3c
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] multiprocessing

2009-12-17 Per discussione Fabrizio Mancini
2009/12/17 Ernesto e.pica...@unical.it:
 Ciao a tutti,

 tempo fa ho iniziato una discussione sul multi-threading da cui è
 emerso che per lanciare più threads con python per aumentare le
 prestazioni è più conveniente utilizzare la libreria multiprocessing.
 Tuttavia no so se la mia scelta è sensata o meno. Ho a disposizione
 più di un processore multi-core.
 Il mio script effettua un loop su una lista di file ed esegue per ogni
 iterazione una specifica funzione su ogni file, per esempio:

 miaLista=[file1,file2,file3]
 for file in miaLista:
        miaFunzione(file)

 Vorrei poter lanciare la mia funzione sulla lista sfruttando più
 processi. Se scelgo di avviare 2 processi, i primi due file della
 lista vengono analizzati. Come faccio a dire allo script di continuare
 ad eseguire la funzione sul file successivo una volta che uno dei
 primi due processi è terminato?
puoi usare il pool del modulo multiprocessing.
http://docs.python.org/library/multiprocessing.html#module-multiprocessing.pool

oppure in alternativa un lock (però mi sa che cosi ti vai ad
impantanare più di quanto ti serve).

Ciao Fabrizio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python