1

Ich bin dabei, ein Python-Modul zu implementieren, das einen Thread- (oder Prozess-) Pool zur gleichzeitigen Verarbeitung von Tasks bereitstellt, die potenziell voneinander abhängig sind. Zum Beispiel können Sie im Falle eines Auftragsverwaltungssystems eine Bestellung aufgeben, eine andere Bestellung aufgeben, die zweite Bestellung stornieren, eine dritte Bestellung aufgeben und dann die erste Bestellung stornieren - alle Bestellplatzierungen können gleichzeitig verarbeitet werden. Die Stornierungen können jedoch nicht gleichzeitig mit den jeweiligen Bestellungen erfolgen und müssen nach Abschluss der Bestellung erfolgen. Ich habe eine gute allgemeine Lösung für solche Probleme gefunden und wollte sie als meinen ersten Open-Source-Beitrag verwenden.Python Multithreading-/Verarbeitungsmodul für Tasks mit Abhängigkeiten, die eine Sequenzierung erfordern

Bevor ich zu viel Zeit damit verbracht habe, wollte ich nur wissen, ob so etwas schon existiert. Kennt jemand ein vorhandenes Python-Paket, das dies tut? Wäre das für jemanden nützlich?

+1

Für alle Interessierten, ich habe ein Projekt dafür auf GitHub gestartet - https://github.com/mikecoop83/pysequen – Mike

Antwort

1

Ja, werfen Sie einen Blick auf . Es verfügt über verschiedene Scheduler für Multithread-, Multiprocessing- und Distributed Computing, die Threads und Prozesse über TaskPool bzw. Pool wiederverwenden. Sie können beliebige Aufgabenabhängigkeiten (direkte azyklische Grafiken - DAGs) damit erstellen. Ich bin mir zwar nicht sicher über die Unterstützung von Stornierungen, aber Sie können es manuell in Ihre Aufgaben implementieren.

+0

Danke für die Infos auf dask. Von dem, was ich kurz lese, sieht es so aus, als würden Sie die gesamte DAG als einen einzigen Satz von Aufgaben (mit Abhängigkeiten) übergeben, die ausgeführt werden sollen. Dies behandelt das Szenario, in dem der Produzent alle Abhängigkeiten kennt. Was ich implementieren wollte, weiß der Produzent nicht, aber die Aufgaben implementieren eine "Schnittstelle", wo sie "gefragt" werden können, wenn sie gleichzeitig mit einer anderen Aufgabe ausgeführt werden können. Auf diese Weise muss der Producer die Abhängigkeiten nicht kennen und der Scheduler behandelt, dass die Dinge in der richtigen Reihenfolge ausgeführt werden. Ist das sinnvoll? – Mike