【问题标题】:Can objects be shared between a thread and wx python and still keep data in sync?对象可以在线程和 wx python 之间共享并且仍然保持数据同步吗?
【发布时间】:2017-09-09 21:56:18
【问题描述】:
我正在为PyCaster 构建一个 gui,我需要从 gui 中进行更改并应用于套接字线程。我对线程的理解是一旦开始,一切都会成为该线程的本地内容,包括对象实例。套接字线程使用time.sleep 每 0.1(假设毫秒)休眠一次。线程套接字具有触发并被 gui 看到的事件。反正有没有做相反的事情?意思是线程看到的事件触发了我可以传递数据的方式。
【问题讨论】:
标签:
python
multithreading
wxpython
【解决方案1】:
您是否考虑过使用类似 Python 的 Queue 同步原语来在多个线程之间传递信息?
您将在您的main.py 文件中实例化Queue 对象,然后将此队列实例传递给您的多个子线程。然后,您的 GUI 线程可以将新事件推送到该 queue 实例,而您的第二个非 GUI 线程将不断尝试调用 queue.get(),然后在 queue.get() 不是 None 时执行它需要执行的任何操作。
queue 类的官方文档可以在这里找到:https://docs.python.org/3.6/library/queue.html,底部有一个相当不错的示例!
我希望这会有所帮助!