当前位置: 首页 > 知识库问答 >
问题:

GUI将挂起,直到创建所有线程为止

淳于鹏
2023-03-14

我已经创建了一个图形用户界面刮板(Qt和Python),它运行多个线程...图形用户界面似乎挂起,直到所有线程都产生...我运行刮板与喜欢200-300线程...一种在创建线程时阻止应用程序不响应的方法...

我在主线程中创建了一个新的Python线程,然后在下面的代码中调用QThread类中的线程

def tempthread(self):
        self.tempt = threading.Thread(target=self.spawn)
        self.tempt.daemon=True
        self.tempt.start()

def spawn(self):

        global noofthreads
        for xd in range(0,noofthreads):
            t = threading.Thread(target=self.startscrape)
            t.daemon = True 
    t.start()    
            tarray.append(t)
            t1 = threading.Thread(target=self.waitthreads)
            t1.start()
def waitthreads(self)
        for t in tarray:
            t.join()

        self.message.emit("Program Execution Completed")

共有1个答案

墨安阳
2023-03-14

当你需要很多线程时,最好使用线程池。我发现有python绑定,所以肯定你应该试试这个。这里是类似的话题。

可悲的是,没有Qt并发的python绑定。这是很好的API,但它使用模板,它是糟糕的记录。

 类似资料:
  • 我有一个python脚本,所以我在python中使用线程模块并发执行。 def run(self):db=MySQLdb。connect('localhost','mytable','user','mytable')游标=db。cursor()query=“dig short”str(反向ip)”按键try:output=子进程。检查\u输出(查询,shell=True)输出\u编辑=输出。条带(

  • 当我尝试使用读取此pod的日志时,它不会返回任何内容。如何查看日志以了解状态为“挂起”的原因?

  • 问题内容: 我遇到了程序挂起的情况,看起来像死锁。但是我尝试用jconsole和visualvm来解决这个问题,但是他们没有发现任何死锁。样例代码: 当我在调试模式下执行此操作时,我可以看到控件达到@Override public void run(){state = 11; 但是一旦执行state = 11,它就会挂起/死锁。我在stackoverflow中查看了不同的帖子,我认为静态初始化程序

  • 我们使用夸克斯来处理在常规函数上运行的消息,因为我们基本上必须调用函数 我们希望以Uni的形式获取数据(https://smallrye.io/smallrye-mutiny/getting-started/creating-unis)所以基本上我们想回去 我们需要进一步下游的uni一次来处理一些数据,但我们想从方法含义返回

  • 注意:我工作了很多时间并研究了google和stackoverflow,但我找不到答案。 我用线。sleep(),它冻结了所有其他JDialog、JFrame和线程。 我的示例代码: 在这种情况下,JDialog无法正确显示: inccorect出现jdialog 但它必须符合这一点: true出现jdialog 我怎样才能解决这个问题。我想让主线程等待另一个线程。有人可以纠正我的示例代码,或者在