Python 如何在PyQt中存储线程本地数据?
在PyQt应用程序中存储线程本地数据的最佳方法是什么? 我的应用程序既使用Python 如何在PyQt中存储线程本地数据?,python,multithreading,qt,pyqt,Python,Multithreading,Qt,Pyqt,在PyQt应用程序中存储线程本地数据的最佳方法是什么? 我的应用程序既使用QThreads,也通过一些依赖项使用本机Python线程(来自threading模块)。我的线程本地存储的特定用例主要与前者相关 我可以看到一些选择 使用threading.local。当从线程化以外的线程调用时,线程化。当前线程()返回一个\u读取对象。AFAICT,threading.local确实支持虚拟线程,但感觉很脆弱。特别是,由于读取,因此线程退出时不会清除存储。显然,我不希望内存泄漏 当我知道相关代码将始终
QThread
s,也通过一些依赖项使用本机Python线程(来自threading
模块)。我的线程本地存储的特定用例主要与前者相关
我可以看到一些选择
threading.local
。当从线程化
以外的线程调用时,线程化。当前线程()
返回一个\u读取
对象。AFAICT,threading.local
确实支持虚拟线程,但感觉很脆弱。特别是,由于读取,因此线程退出时不会清除存储。显然,我不希望内存泄漏
QThread
中运行时,我可以直接将数据存储在通过获取的thread对象中。不知道如果从非Qt线程调用会发生什么你所说的“我有一种感觉,当线程退出时,存储区没有被正确地清除”是什么意思?您是否做过任何测试,为这一点提供了实际证据?如果有,则应报告为错误;如果不是的话,你的“感觉”似乎没有多大价值。我为模糊的表述道歉。我还没有测试它,但我一直在研究
threading.local
的Python实现。根据文档,a(怎么可能?没有可靠的方法知道它何时终止。)因此,由threading.local
创建的数据存储永远不会被清除。