Ich habe wiedermal ein kleines großes Problem:
ich habe eine GUI programmiert, in der ich während der Laufzeit neue Grafik-Objekte erstellen kann, welche dann jeweils in einem getrennten thread ihre Arbeit verrichten...Alles funktioniert relativ gut

Wenn nun allerdings die Anzahl der Objekte, also auch Threads, hinreichend steigt, treten unregelmäßig Fehlermeldungen von Methoden der Canvas-Klasse auf (coords(), find_withtag(), itemconfigure(), etc.). Höchstwahrscheinlich rufen dann mehrere Threads die selbe Methode im gemeinsam verwendeten Canvas-Objekt gleichzeitig auf und es kommt zu Zugriffsverletzungen.
Deshalb suche ich verzweifelt nach einer Möglichkeit, dass die Threads zwar weiterhin unabhängig von einander arbeiten können, aber keine Zugriffsverletzungen mehr auftreten.
Mir kommen 2 Ideen in den Kopf, für die ich aber leider noch keine Lösung en kenne:
1) Eine Sperre / Lock, durch die ein exklusiver Zugriff auf die Canvas-Methoden gewährleistet ist. Alle anderen zugreifenden Threads müssen warten / werden vom OS scheduled.
2) Eine Art Befehls-Queue, in die ich alle Methodenaufrufe schiebe, wodurch ebenfalls der exklusive Zugriff auf die Canvas-Methoden erreicht wird.
Bsp-fehlermeldungen:
File "C:\Programme\Python\lib\lib-tk\Tkinter.py", line 2090, in create_line
return self._create('line', args, kw)
File "C:\Programme\Python\lib\lib-tk\Tkinter.py", line 2076, in _create
return getint(self.tk.call(
ValueError: invalid literal for int(): 1383expected boolean value but got "??"
File "C:\Programme\Python\lib\lib-tk\Tkinter.py", line 2146, in find_withtag
return self.find('withtag', tagOrId)
File "C:\Programme\Python\lib\lib-tk\Tkinter.py", line 2119, in find
return self._getints(
File "C:\Programme\Python\lib\lib-tk\Tkinter.py", line 972, in _getints
return tuple(map(getint, self.tk.splitlist(string)))
ValueError: invalid literal for int(): expected
for i in self.c.find_withtag('red'):
File "C:\Programme\Python\lib\lib-tk\Tkinter.py", line 2146, in find_withtag
return self.find('withtag', tagOrId)
File "C:\Programme\Python\lib\lib-tk\Tkinter.py", line 2119, in find
return self._getints(
File "C:\Programme\Python\lib\lib-tk\Tkinter.py", line 972, in _getints
return tuple(map(getint, self.tk.splitlist(string)))
ValueError: invalid literal for int(): 7006expected
... zu beachten ist, dass die ValueErrors im Quellcoed definitiv nicht zutreffend sind...d.h. sie können eigentlich nur durch Zugriffsverletztungen, etc. entstehen (oder irre ich mich ??

Ich wäre also für Tipps / Lösungen sehr dankbar.
Viele Grüße,
spooky0815