QtThreadPool和data mod

2024-04-26 23:32:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Qt中的多线程,但我遇到了一个问题QThreadPool。在

我有一个MainController类,它包含一个QThreadPool。 此类还有一个特定的方法processDirectory来初始化线程进程:

class MainController():
    def __init__(self, model, view):
        [...]
        self.pool = QtCore.QThreadPool()
        self.pool.setMaxThreadCount(2)

    def processDirectory(self, dirpath):
        [...]
        # Create a directory worker
        dirrunnable = DirRunnable(dirpath, extSelected, self.model.dirMgrModel)

        # Send worker to thread pool
        self.pool.start(dirrunnable)

然后我在一个widget中有一个signal/slot连接,它捕获一个新目录来启动processDirectory方法。在

我有竞争条件,因为有时代码可以工作,有时却不行

所以我的问题是: 是否允许从给定类的方法向线程池发送新的工作线程? 在这种情况下,您将如何处理新worker的创建和发送到线程池的操作?在

在我的例子中,当方法processDirectory时,dirrunable对象会发生什么情况? 池是否将对象保留在其上下文中?在

由于我有问题,我现在的想法是创建另一个线程,该线程将包含池,并通过队列接收目录路径,从而在该线程中创建工作线程。 但这看起来太疯狂了,我觉得我错过了一些重要的东西!在

谢谢你的帮助!在

顺便说一句:不管我在网上读到什么,我都无法理解的错误:

^{pr2}$

Tags: 对象方法self目录modeldef情况线程