Python线程:如何表示线程应为只读的数据?

Python线程:如何表示线程应为只读的数据?,python,tkinter,python-multithreading,Python,Tkinter,Python Multithreading,我正在构建一个tkinter应用程序,它在mainloop()的旁边运行一个守护进程线程,线程之间的大部分共享数据都通过队列 我已经在另一个.py文件中创建了另一个线程类,并且正在主文件中导入它 在主文件中,我有一个SETTINGSdict,用户使用GUI更新它,我需要另一个线程能够在不修改它的情况下读取它 我曾考虑过RLock,但据我所知,它通常由两个线程使用,将来可能会有点混淆 我正在寻找一些简单的,必须是python内置解决方案 编辑:我要补充的是,另一个线程将一直访问dict,并且不应该

我正在构建一个tkinter应用程序,它在
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
,然后将它传递到线程中