Outils pour utilisateurs

Outils du site


python:programmes:multiprocessing1

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
python:programmes:multiprocessing1 [2012/11/11 17:54] rootpython:programmes:multiprocessing1 [2013/03/12 23:07] (Version actuelle) root
Ligne 1: Ligne 1:
 +Pourquoi il faut utiliser le multiprocessing et non le threading sous python : http://blog.unix4fun.net/post/2007/09/17/python-le-GIL-pourquoi-et-comment-faire
 +
 ====== Module multiprocessing ====== ====== Module multiprocessing ======
  
-<code>+Méthode avec Pool : 
 + 
 +<code python multiprocessing1.py>
 #!/usr/bin/env python #!/usr/bin/env python
  
Ligne 26: Ligne 30:
          except:          except:
              print "timeout..."              print "timeout..."
 +</code>
 +
 +Méthode avec Queue (échanges interprocess) : 
 +Extrait de http://download.velannes.com/Python/processing.pdf
 +<code python multiprocessing2.py>
 +#!/usr/bin/env python
 +
 +from multiprocessing import Queue, Process, current_process
 +
 +def worker(tasks, results):
 + # Get a tasks
 +        t = tasks.get()
 +
 + # Do operation
 + result = t * 2
 +
 + # Put the result in results queue
 + results.put([current_process().name, t, "*", 2, result])
 +
 +if __name__ == '__main__':
 + # Number of processes
 + n = 100
 +
 + # Create my tasks and results Queue
 + myTasks = Queue()
 + myResults = Queue()
 +
 + # Create n process
 + Workers = [ Process(target=worker, args=(myTasks, myResults)) for i in range(n) ]
 +
 + # Start processes
 + for each in Workers:
 + each.start()
 +
 + # Create tasks
 + for each in range(n):
 + myTasks.put(each)
 +
 + # Get the results
 + for each in range(n):
 + result = myResults.get()
 + print("Res : %s" % result)
 </code> </code>
  
Ligne 32: Ligne 78:
 Exemple de bench IO avec des threads : Exemple de bench IO avec des threads :
  
-<code>+<code python threading.py>
 #!/usr/bin/env python #!/usr/bin/env python
 # #
python/programmes/multiprocessing1.1352656492.txt.gz · Dernière modification : 2012/11/11 17:54 de root