Имейте в виду, что python не поддерживает многопоточность выполнения.Когда Python работает, только 1 поток работает в любой момент времени.Тем не менее, вы все равно должны убедиться, что ваши данные защищены от множественного доступа (то есть один поток начинает что-то делать, выполняет прерывание, другой поток начинает выполняться и начинает делать что-то еще, веселье наступает)
Когдапрограммируя в графическом интерфейсе, вы не должны (и пробалби не будет, так как это часто приводит к сбоям) манипулировать вашими виджетами из более чем одного потока.Большинство графических интерфейсов предоставляют средства для публикации «задач» в потоке, на котором выполняется графический интерфейс). Это может быть утомительно, но это единственный способ, которым он будет работать.Например: wxPython предоставляет функцию wx.CallAfter .
Насколько это возможно, попытайтесь выделить ваши блокировки (чтобы потоки не касались общих данных нав то же время) и объекты условий (которые используются для сигнализации одному потоку о переходе к чему-либо из другого потока) в вашем конструкторе (ах) ДО того, как вы запустите свои потоки:* И будьте готовы увидеть эту конструкцию много:
def myMethod(self):
self._lock.acquire()
try: # or with if you prefer
# do my stuff
# pack up my data
def myFunc():
# post updates to widgets
finally:
self._lock.release()
wx.CallAfter(myFunc)