# # 多线程实例3 method = [pieState] # 字典 self.thread_s1 = {} self.worker_s1 = {} for i in range(len(method)): self.thread_s1[i] = 'thread' + str(i) self.worker_s1[i] = 'worker' + str(i) for j in range(len(method)): self.thread_s1[j] = QThread() self.worker_s1[j] = Worker() self.worker_s1[j].moveToThread(self.thread_s1[j]) self.thread_s1[j].started.connect(self.worker_s1[j].run) self.worker_s1[j].finished.connect(self.thread_s1[j].quit) self.worker_s1[j].finished.connect(self.worker_s1[j].deleteLater) self.thread_s1[j].finished.connect(self.thread_s1[j].deleteLater) self.worker_s1[j].finished.connect(method[j]) # Start the thread self.thread_s1[j].start() #调用函数 # pieState() except Exception as alarm: message = QMessageBox.warning(stack1,'警告','数据库没有数据',QMessageBox.Ok)子线程报警:RuntimeError: In affine_transform: Invalid vertices array.没有触发try except
时间: 2024-02-14 18:19:22 浏览: 84
多线程(thread)的操作示例
这段代码是关于多线程的实例。其中使用了QThread和Worker类来创建子线程,并将对象移动到子中。在这个子中,创建了多个子线程来执行不同的函数(method)。在每个子线程中,启动后会执行Worker类中的run方法,当run方法执行完毕后,会触发finished信号,并且会将子线程和Worker对象删除。同时,还将finished信号和对应的函数(method)连接起来,以便在子线程任务完成后执行相应的函数。
至于你提到的try except未被触发的问题,可能是因为在子线程中抛出的异常并没有被正确捕获,你可以在Worker类中添加异常处理来避免这种情况的发生。
阅读全文