如何在PyQt中存储线程本地数据?

时间:2019-03-18 14:16:26

标签: python multithreading qt pyqt

在PyQt应用程序中存储线程本地数据的最佳方法是什么?

我的应用程序同时使用QThread和一些依赖项,也使用本地Python线程(来自threading模块)。我对线程本地存储的特定用例主要与前者有关。

我可以看到一些选项。

  1. 使用threading.local。当从threading以外的线程调用时,threading.current_thread()返回一个_DummyThread对象。 AFAICT,threading.local支持虚拟线程,但感觉很脆弱。特别是,由于DummyThread is never deleted,因此线程退出时不会清除存储。显然我不希望内存泄漏。

  2. 当我知道所讨论的代码将始终在QThread中运行时,我可以将数据直接存储在通过QThread::getCurrentThread()获得的线程对象中。不知道从非Qt线程调用会发生什么情况。

  3. PyQt中是否有QThreadStorage个等价物?在Qt中,它是模板,而不是类,因此我认为PyQt中不可用。

0 个答案:

没有答案