# # 多线程实例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)报警: return affine_transform(points, mtx) RuntimeError: In affine_transform: Invalid vertices array. 为什么没有触发try except机制
时间: 2024-02-14 08:19:19 浏览: 51
根据您提供的代码片段,我看不出来为什么try except机制没有被触发。但是,我注意到您在except语句块中使用了QMessageBox来弹出警告消息框。请确保在运行该代码的环境中,QMessageBox可以正常使用。另外,您可以在except语句块中添加一些print语句来输出异常信息,以便更好地调试问题。
相关问题
# # 多线程实例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) try: 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() except Exception as alarm: print(str(alarm))子线程运行报警为什么没有触发try except
根据您提供的修改后的代码,可以看出您已经在try语句块中包含了整个for循环。因此,如果有任何异常在for循环中抛出,都应该被try语句块捕获并触发except语句块中的代码。如果您仍然没有触发try except机制,可能是因为您没有正确地引发异常。您可以尝试在for循环中添加一些故意触发异常的代码来测试try except机制是否正常工作。
WorkerThread(data=self.data_instance)
WorkerThread是一个可能表示一个线程类的构造函数,它接受一个名为"data"的参数,并将其赋值给类变量self.data_instance。这个构造函数的作用是在创建新线程时,将"data_instance"数据传递给WorkerThread实例,以便在线程内部使用这个数据进行相关的任务处理。
举个例子,如果WorkerThread是用来执行一些耗时的操作并且需要数据驱动,那么这个构造函数可能是这样的:
```python
class WorkerThread(threading.Thread):
def __init__(self, data):
super().__init__()
self.data_instance = data # 将传入的数据保存到线程对象中
def run(self):
while True:
process_data(self.data_instance) # 使用data_instance进行工作
```
在这里,`process_data`是一个处理数据的方法,`self.data_instance`就是在这个线程运行期间可以访问和操作的数据。
阅读全文