首页 > 解决方案 > 如何在 PyQt 中存储线程本地数据?

问题描述

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

我的应用程序既使用QThreads ,也通过一些依赖项使用本机 Python 线程(来自threading模块)。我的线程本地存储的具体用例主要与前者有关。

我可以看到一些选项。

  1. 使用threading.local. 当从外部线程调用时threadingthreading.current_thread()返回一个_DummyThread对象。AFAICT,threading.local确实支持虚拟线程,但感觉很脆弱。特别是,由于 aDummyThread 永远不会被删除,因此线程退出时不会清除存储。显然我不希望内存泄漏。

  2. 当我知道有问题的代码将始终在 a 中运行时QThread,我可以直接将数据存储在通过QThread::getCurrentThread(). 不知道如果从非 Qt 线程调用会发生什么。

  3. QThreadStoragePyQt 中是否有等价物?在 Qt 中,它是一个模板,而不是一个类,所以我认为它在 PyQt 中不可用。

标签: pythonmultithreadingqtpyqt

解决方案


推荐阅读