Hi ich habe über pyinstaller ein windows exe generiert! Wie kann ich verhindern dass mein exe nicht parallel läuft?
Nicht mehrfach starten? Oliver
Durch Anlegen einer temporären Datei deren Vorhandensein beim Start geprüft wird vielleicht.
Sven la schrieb: > Durch Anlegen einer temporären Datei deren Vorhandensein beim Start > geprüft wird vielleicht. Eine temporäre Datei alleine reicht in der Regel nicht. Denn wenn das Programm mal abstürzt oder durch einen Stromausfall oder was auch immer nicht ordnungsgemäß beendet wurde, kann man es danach überhaupt nicht mehr starten, weil die Datei noch da ist.
H. R. schrieb: > Wie kann ich verhindern dass mein exe nicht parallel läuft? Warum darf sie das nicht tun? Kann man diese Restriktion aufheben? Kann man diesen Umstand vielleicht zur Erkennung der parallelen Instanz verwenden? Sven la schrieb: > Durch Anlegen einer temporären Datei deren Vorhandensein beim Start > geprüft wird vielleicht. Nicht so gut bei einem Crash.
.. schau dir mal psutil an. https://pypi.org/project/psutil/ Dqamit schaust Du ob in der Prozess-Liste schon deine Exe vorhanden ist. Wenn ja, startest du nicht nochmal.
In anderen Sprachen nutzt man dafür einen Mutex o.ä. Bietet sowas Python nicht?
FS schrieb: > In anderen Sprachen nutzt man dafür einen Mutex o.ä. Bietet sowas > Python > nicht? Selbstverständlich hat Python so etwas. Wenn der Mutex nur innerhalb einer Instanz benötigt wird, würde ich einen Blick auf asyncio.Lock werfen. Da es hier aber um mehrere Instanzen geht, delegiert man das besser ans Betriebssystem. In dem Fall wäre pywin32.CreateMutex eine gute Art, auf die API zuzugreifen. Sven la schrieb: > Durch Anlegen einer temporären Datei deren Vorhandensein beim > Start > geprüft wird vielleicht. Das Problem, das die Vorschreiber erkannt haben, nennt sich "stale lock". Lösung: Lockfile suchen, falls vorhanden löschen, neu anlegen, öffnen und geöffnet halten, bei Programmende schließen und löschen. Wenn das lock aktuell ist, schlägt das Löschen fehlt - die Datei ist ja geöffnet! Ansonsten hat man es mit einem stale lock zu tun, also kann man es löschen und ein eigenes lock anlegen. Zieht jemand den Stecker, bleibt das Lockfile zwar erhalten, aber nach dem Neustart ist es nicht mehr geöffnet und kann gelöscht werden. Sowohl das Lockfile als auch der Mutex (egal ob vom OS verwaltet oder nicht) sind übliche Lösungen für dieses Problem.
Heiner schrieb: > Wenn das lock aktuell ist, schlägt das Löschen fehlt - die Datei ist ja > geöffnet! Auf Linux in der Regel nicht.
MaWin schrieb: > Auf Linux in der Regel nicht. H. R. schrieb: > ich habe über pyinstaller ein windows exe generiert! Wayne?
Heiner schrieb: > Wayne? Nur so als Information, damit bekannt ist, dass das eine plattformabhängige Lösung ist.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.