[PYTHON] Parallélisation de la méthode de classe

Parallélisation de méthode de classe et surveillance de processus

En python, la parallélisation peut être facilement réalisée en utilisant le multiprocessing.Pool de multiprocessing qui est une bibliothèque de parallélisation, mais il ne peut pas être utilisé pour la parallélisation comme la méthode de classe. Dans ce cas, il n'y a pas d'autre choix que de paralléliser à l'aide du multiprocessing.Process, mais si vous exécutez des processus pour chaque nombre de processeurs, lorsque vous exécutez plus de processus que le nombre de processeurs, le processeur du processus qui s'est terminé plus tôt sera libéré et il sera gaspillé. Va finir. Je me suis demandé si je pouvais exécuter un nouveau processus à partir d'un processeur qui se terminait comme SGE, alors j'ai créé de force un script pour cela. Il y a peut-être un meilleur moyen.

Un exemple de script de gestion de processus parallèle lors de la parallélisation de la méthode de classe.

import multiprocessing as mp
ps = []
for i in range(1000):
    ps.append(mp.Process(target=hoge,args=(i,))) #Générer 1000 fonctions ou méthodes cibles

finishedList       = []
presentindex       = 0
for p in ps[0:mp.cpu_count()]:
    p.start()
    presentindex += 1

while 1:
    time.sleep(1)#Surveillez chaque seconde.
    for i, p in enumerate(ps[:presentindex]):
        if p.is_alive() or i in finishedList:#Jugement de fin de procédure p
            pass
        else:
            finishedList.append(i)#Enregistrer l'index du processus terminé
            if presentindex < len(ps):
                ps[presentindex].start()
                presentindex += 1
                print(i)

    if len(finishedList) == len(ps):#Quitter si le nombre de processus terminés et le nombre de processus créés sont identiques
        break

Recommended Posts

Parallélisation de la méthode de classe
Clustering de méthodes de clustering
Méthode de classe Méthode statique
Résumé de la méthode d'essai
Globalisation des variables d'instance de classe
Comportement de la méthode pandas rolling ()
Profil dans une méthode de la classe
Parallélisation
Utilisation correcte de la méthode d'instance et de la méthode de classe
[Hikari-Python] Chapitre 09-03 Classe (Héritage)
classe
Implémentation Einsum de la méthode d'itération de valeur
Introduction d'une méthode de conception de contrôleur pilotée par les données
Calcul de la classe auto-fabriquée et de la classe existante
[python] -1 signification de la méthode de remodelage de numpy
classe
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
Expliquer le mécanisme de la classe de données PEP557
Résumé de la méthode de spécification des paramètres de distribution gamma
[Mémo d'apprentissage] Bases de la classe par python
Compter / vérifier le nombre d'appels de méthode.
Exemple d'utilisation de variables de classe et de méthodes de classe
[Python] Différence entre la méthode de classe et la méthode statique
Comparaison de l'héritage de classe et de la description du constructeur
[Pandas_flavor] Ajouter une méthode de Pandas DataFrame
Diverses spécifications de format de la méthode str.format () de Python3
Résumé de la méthode de connexion par DB de SQL Alchemy
Construction d'un environnement de développement pour l'atelier Choreonoid
Vous pouvez appeler la méthode de la classe directement dans Python3 sans ajouter @staticmethod