Ich habe ein Skript in Python, das eine Ressource verwendet, die nicht von mehr als einer bestimmten Anzahl gleichzeitiger Skripts verwendet werden kann.Benannte Semaphore in Python?
Klassisch würde dies durch einen benannten Semaphoren gelöst werden, aber ich kann diese in der Dokumentation des Moduls multiprocessing oder threading nicht finden.
Fehle ich etwas oder sind Semaphoren benannt, die nicht von Python implementiert wurden? und, was noch wichtiger ist, wenn die Antwort nein ist, was ist der beste Weg, um einen zu emulieren?
Danke, Boaz
PS. Aus Gründen, die für diese Frage nicht so relevant sind, kann ich die Aufgabe nicht zu einem kontinuierlich laufenden Prozess/Daemon zusammenfassen oder mit erzeugten Prozessen arbeiten - beide scheinen mit der Python-API zu funktionieren.
Es gibt viele Möglichkeiten, das falsch zu machen (Fairness, Zeitplan, Aufwachen, Rennbedingungen). Verwenden Sie Kernel oder libc-Grundelemente (z. B. die echte sem_ * API oder die CreateSemaphore/event API in Windows); vermeiden Sie, Ihre eigenen Synchronisationsgrundelemente zu rollen. –
Deshalb biete ich an, dass Sie Boost verwenden können, wenn Sie nicht selbst damit anfangen können. –