python:async

Ceci est une ancienne révision du document !


Programmation asynchrone


Lancement de threads

from threading import Thread
 
class RunFuncAsync(Thread):
    def __init__(self, func, args):
        Thread.__init__(self)
	self.func = func
	self.args = args
 
    def run(self):
	self.func(self.args)
 
threads = []
 
for _ in range(nb_of_threads):
    threads.append(RunFuncAsync(func, args))
 
for t in threads:
    t.start()
 
for t in threads:
    t.join()

Verrous

from threading import RLock
 
verrou = RLock()
 
class ThreadClass(Thread):
    def run(self):
        with verrou:
            # section critique

import multiprocessing
 
def loop_function(j, param):
    # ...
 
with multiprocessing.Pool(5) as p:
        raw_hist = p.map(partial(loop_function, param=param), range(n))

La fonction loop_function va s'exécuter sur chaque élément de la liste constituée par l'itérable range(n), représentés par le paramètre j. L'utilisation de partial permet juste de spécifier des paramètres. La fonction loop_function doit être en top module.

  • python/async.1572439804.txt.gz
  • Dernière modification : 2021/04/04 17:01
  • (modification externe)