Multicore Processing

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
JohannX
User
Beiträge: 110
Registriert: Mittwoch 27. März 2019, 17:07

Hallo zusammen!

Mit einem Python Script wird eine asci Datei ausgelesen und die Daten gefiltert und anschließend mit Plotly als html File ausgegeben.
Die Dateien haben eine Größenordnung von etwa 500MB
Der Code an sich funktioniert, nur dauert das ganze eben sehr lange da anscheinend nur ein CPU daran beteiligt ist.

Deshalb möchte ich gerne alle Kerne nutzen um die Zeit zu verkürzen.
Nur weiß ich grad nicht wo und wie das funktioniert.

Hoffe mir kann eventuell hier jemand helfen :roll:
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Das kann man nicht pauschal beantworten, weil nicht jede Aufgabe parallelisiert werden kann.
In Python gibt es dafür multiprocessing.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@JohannX: was auch immer sehr lange dauert...

es macht keinen Sinn, blind mehr Kerne zu benutzen. Man muß dazu genau wissen, was so lange dauert, und ob es nicht bessere Lösungen gibt.

Entweder ist die Einleseroutine sehr umständlich geschrieben (500MB lesen dauert im Sekundenbereich), oder die eigentliche Arbeit liegt im Plotten. Da läßt sich dann wenig ändert.
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Neben `multiprocessing` könnte man noch `concurrent.futures` erwähnen, was auch einen Prozesspool verwenden kann.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
JohannX
User
Beiträge: 110
Registriert: Mittwoch 27. März 2019, 17:07

Vielen Dank!

@Sirius3
Habe es jetzt mal gestoppt und einen Timer eingebaut, du hattest Recht, das Plotten dauert einfach so lange.

Danke auf jeden Fall :)
Antworten