[PYTHON] Parallelisierung der Klassenmethode

Parallelisierung von Klassenmethoden und Prozessüberwachung

In Python kann die Parallelisierung leicht mithilfe von Multiprocessing realisiert werden. Der Multiprocessing-Pool ist eine Parallelisierungsbibliothek, kann jedoch nicht für Parallelisierungen wie die Klassenmethode verwendet werden. In diesem Fall bleibt keine andere Wahl, als mit Multiprocessing.Process zu parallelisieren. Wenn Sie jedoch Prozesse für jede Anzahl von CPUs ausführen und mehr Prozesse als die Anzahl der CPUs ausführen, wird die CPU des zuvor beendeten Prozesses freigegeben und verschwendet. Wird enden. Ich fragte mich, ob ich einen neuen Prozess von einer CPU ausführen könnte, die wie SGE endete, also erstellte ich zwangsweise ein Skript dafür. Vielleicht gibt es einen besseren Weg.

Ein Beispiel für ein paralleles Prozessverwaltungsskript beim Parallelisieren der Klassenmethode.

import multiprocessing as mp
ps = []
for i in range(1000):
    ps.append(mp.Process(target=hoge,args=(i,))) #Generieren Sie 1000 Zielfunktionen oder -methoden

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

while 1:
    time.sleep(1)#Überwachen Sie jede Sekunde.
    for i, p in enumerate(ps[:presentindex]):
        if p.is_alive() or i in finishedList:#Beurteilung der Beendigung des Verfahrens p
            pass
        else:
            finishedList.append(i)#Index des abgebrochenen Prozesses speichern
            if presentindex < len(ps):
                ps[presentindex].start()
                presentindex += 1
                print(i)

    if len(finishedList) == len(ps):#Beenden Sie, wenn die Anzahl der abgebrochenen Prozesse und die Anzahl der erstellten Prozesse gleich sind
        break

Recommended Posts

Parallelisierung der Klassenmethode
Clustering-Methode Clustering
Klassenmethode statische Methode
Zusammenfassung der Testmethode
Globalisierung von Klasseninstanzvariablen
Verhalten der Pandas Rolling () Methode
Profil innerhalb einer Methode der Klasse
Parallelisierung
Ordnungsgemäße Verwendung der Instanzmethode und der Klassenmethode
[Hikari-Python] Kapitel 09-03 Klasse (Vererbung)
Klasse
Einsum Implementierung der Wertiterationsmethode
Einführung einer datengesteuerten Controller-Entwurfsmethode
Berechnung der selbst erstellten Klasse und der vorhandenen Klasse
[Python] -1 Bedeutung der Umformungsmethode von Numpy
Klasse
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
Erläutern Sie den Mechanismus der PEP557-Datenklasse
Zusammenfassung der Spezifikationsmethode für Gammaverteilungsparameter
[Lernnotiz] Grundlagen des Unterrichts mit Python
Zählen / überprüfen Sie die Anzahl der Methodenaufrufe.
Beispiel für die Verwendung von Klassenvariablen und Klassenmethoden
[Python] Unterschied zwischen Klassenmethode und statischer Methode
Vergleich von Klassenvererbung und Konstruktorbeschreibung
[Pandas_flavor] Fügen Sie eine Methode von Pandas DataFrame hinzu
Verschiedene Formatspezifikationen der str.format () -Methode von Python3
Zusammenfassung der Verbindungsmethode nach DB von SQL Alchemy
Bau einer Entwicklungsumgebung für die Choreonoid-Werkstatt
Sie können die Methode der Klasse direkt in Python3 aufrufen, ohne @staticmethod hinzuzufügen