[Python-de] Singleton unter Python3

Marek Kubica marek at xivilization.net
Mo Nov 21 01:01:08 CET 2011


Hallo,

On Sun, 20 Nov 2011 21:11:17 +0100
guenther baer <guenther.baer at bliscon.de> wrote:

> Also nach meinem Verständnis (sag es mir bitte wenn ich falsch liege) 
> dient ein Singleton dazu zu verhindern, dass mehrere Objekte einer 
> Klasse gebildet werden können. Somit soll wohl verhindert werden,
> dass ein bestimmtes Programm mehrfach gestartet werden kann.
> Das bereits beschriebene Verfahren habe ich in einem Programm
> entdeckt und wollte einfach nur wissen, wie es unter Python3
> umgesetzt werden könnte. Sollte es aber andere Verfahren geben, wie
> so etwas umgesetzt werden kann, bin ich für Informationen sehr
> dankbar.

Ich finde du hast da etwas überreagiert. Ich habe einfach ein
XY-Problem vermutet, dass du dich eventuell verrannt hast in ein
Problem und dass es vielleicht eine bessere Lösung gibt. Das ist
durchaus Konstruktiv, auch wenn es nicht sofort auf dein akutes Problem
eingeht.

Und an dieser Stelle mus ich sagen, dass ich nicht verstehe was
Singletons mit Programm mehrfach starten zu tun haben. Wenn ich mehrere
Python-Interpreter starten will dann kann ich auch mehrere Singletons
haben. Die gelten nicht per-se über Prozessgrenzen hinweg.

Der mehrfache Programmstart ist übrigens ein Gelöstes Problem (TM),
zumindest unter Linux gibt es dafür schon länger
<https://live.gnome.org/LibUnique> welches inzwischen auch in GLib
(GApplication) und GTK+ (GtkApplication) eingeflossen ist. Dabei wird
der DBus-Session-Bus verwendet, was sicherstellt dass ein User ein
Programm nur einmal starten kann, aber mehrere user auf der gleichen
Maschine sich nicht behindern. Zudem ermöglicht Unique etwa die
Übergabe von Programmparametern oder ähnliches in das bereits laufende
Programm.

grüße,
Marek


Mehr Informationen über die Mailingliste python-de