Bonjour, je voudrais limiter le nombre de processus de mon programme à 4. C’est a dire que si mon programme à plus de 4 processus actif il attend que les autres se termine avant d’en lancer d’autre
voici mon code simplifié, je voudrais que au lieu de crée 100 processus d’un coup, python se limite à 4 seulement (définie dans ma variable number_of_core)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | from multiprocessing import Process, Queue, Manager def funct1(data): data.append(1) if __name__ == '__main__': manager = Manager() data = manager.list() procs=[] number_of_core=4 for i in range(0,100): p = Process(target=funct1, args=(data,)) p.start() procs.append(p) for process in procs : process.join() print(data) print(len(data)) |
dans mon cas l’ordre des éléments à ajouter dans ma liste "data" n’a pas d’importance je souhaite ajouter 100 éléments dans la liste, mais pas plus de 4 en même temps.
ici, c’est un exemple bateau mais dans mon vrai code, la fonction funct1 effectue des traitements plus lourds que je voudrais paralléliser, mais si python me crée 100 process d’un coup sa sature (pour rien), donc je voudrais le limiter au nombre de coeur de ma machine : 4 (je sais qu’il existe une fonction dans multiprocessing pour connaitre le nombre de cpu sur sa machine)