Python线程:如何表示线程应为只读的数据?
我正在构建一个tkinter应用程序,它在Python线程:如何表示线程应为只读的数据?,python,tkinter,python-multithreading,Python,Tkinter,Python Multithreading,我正在构建一个tkinter应用程序,它在mainloop()的旁边运行一个守护进程线程,线程之间的大部分共享数据都通过队列 我已经在另一个.py文件中创建了另一个线程类,并且正在主文件中导入它 在主文件中,我有一个SETTINGSdict,用户使用GUI更新它,我需要另一个线程能够在不修改它的情况下读取它 我曾考虑过RLock,但据我所知,它通常由两个线程使用,将来可能会有点混淆 我正在寻找一些简单的,必须是python内置解决方案 编辑:我要补充的是,另一个线程将一直访问dict,并且不应该
mainloop()
的旁边运行一个守护进程线程,线程之间的大部分共享数据都通过队列
我已经在另一个.py
文件中创建了另一个线程类,并且正在主文件中导入它
在主文件中,我有一个SETTINGS
dict,用户使用GUI更新它,我需要另一个线程能够在不修改它的情况下读取它
我曾考虑过RLock
,但据我所知,它通常由两个线程使用,将来可能会有点混淆
我正在寻找一些简单的,必须是python内置解决方案
编辑:我要补充的是,另一个线程将一直访问dict,并且不应该知道主线程何时更新它。设置
全局变量
因为它是用户更新的,所以在修改时不会出现线程安全问题。只需(仅)在您想要的任何其他位置读取变量 设置全局变量
因为它是用户更新的,所以在修改时不会出现线程安全问题。只需(仅)在您想要的任何其他位置读取变量 你可以让其他线程访问设置的副本。我需要尽快编写代码,不想创建相同信息的其他副本。另外,我需要另一个线程能够在没有主线程的情况下读取信息,以便反复发送。您可以使用collections.UserDict
的子类,该子类存储所有者线程的id,然后在\uuuuu setitem\uuuuu
中检查当前线程是否为所有者线程。如果线程试图写入,会发生什么?引发异常?静默失败?您可以让其他线程访问设置的副本。我需要尽快编写代码,不想创建相同信息的其他副本。另外,我需要另一个线程能够在没有主线程的情况下读取信息,以便反复发送。您可以使用collections.UserDict
的子类,该子类存储所有者线程的id,然后在\uuuuu setitem\uuuuu
中检查当前线程是否为所有者线程。如果线程试图写入,会发生什么?引发异常?静默失败?但它如何对另一个线程可见?这个线程是在另一个模块中声明的类(我直接导入,并在主模块中初始化),在线程中添加一个新参数\uuuuuu init\uuuuu
,并将其传递到线程中,但它如何对另一个线程可见?这个线程是在另一个模块中声明的类(我直接导入,在主模块中初始化),在线程中添加一个新参数\uuuuuu init\uuuu
,然后将它传递到线程中