Это не потокобезопасно. Процитирую это превосходное сообщение в блоге :
В мире wxPython существует три связанных «безопасных» метода. Если вы не используете один из этих трех вариантов при обновлении интерфейса пользователя, у вас могут возникнуть странные проблемы. Иногда ваш графический интерфейс будет работать просто отлично. В других случаях произойдет сбой Python без видимой причины. Таким образом, нужны безопасные для потоков методы: wx.PostEvent, wx.CallAfter и wx.CallLater.
В двух словах, вы создаете приемник для объекта публикации:
from wx.lib.pubsub import Publisher
Publisher().subscribe(update_function, 'update') # Params: callback, event name
Затем из потока используйте CallAfter
:
# Will trigger 'update_function' with argument 'My message'
wx.CallAfter(Publisher().sendMessage, 'update', 'My message')
Независимо от всего этого, хотя, если вы просто хотите обмениваться переменными между процессами, используйте поддерживаемый способ сделать это . В настоящее время вы используете GUI-инструментарий для хранения ваших переменных, в то время как вы должны использовать встроенные типы для этого. Поделитесь ими правильно и используйте GUI для отображения ваших данных.