在PyQt应用程序中存储线程本地数据的最佳方法是什么?
我的应用程序同时使用QThread
和一些依赖项,也使用本地Python线程(来自threading
模块)。我对线程本地存储的特定用例主要与前者有关。
我可以看到一些选项。
使用threading.local
。当从threading
以外的线程调用时,threading.current_thread()
返回一个_DummyThread
对象。 AFAICT,threading.local
支持虚拟线程,但感觉很脆弱。特别是,由于DummyThread
is never deleted,因此线程退出时不会清除存储。显然我不希望内存泄漏。
当我知道所讨论的代码将始终在QThread
中运行时,我可以将数据直接存储在通过QThread::getCurrentThread()
获得的线程对象中。不知道从非Qt线程调用会发生什么情况。
PyQt中是否有QThreadStorage
个等价物?在Qt中,它是模板,而不是类,因此我认为PyQt中不可用。