我是python / PyQt的新手,因此深入了解工作线程。 我有以下代码用于在工作线程上运行函数,让主线程空闲。我的工作线程如下所示:
from PyQt4 import QtCore
class my_worker_thread(QtCore.QThread):
'''
a worker thread
'''
def __init__(self,function, *args, **kwargs):
QtCore.QThread.__init__(self)
self.exiting=False
self.function=function
self.args=args
self.kwargs=kwargs
def __del__(self):
self.exiting=True
self.wait()
def run(self):
self.function(*self.args,**self.kwargs)
return
在这种情况下,我产生了许多工人来处理文件(大约1000个txt文件),主线程读取单个父文件,列出了需要读取的所有文件。 对于父文件中的每一行,我生成一个工作线程,以便工作者可以处理该文件。 父级可能在多行中具有相同的文件,因此工作人员可能不得不多次处理文件。
调用逻辑是这样的:
def main_caller(self):
#For each line in parent file spawn a thread to process the file
for line in parent_file:
process_file=my_worker_thread(self.get_file_information,line)
process_file.start()
到目前为止它有点工作,但我确实得到以下错误,这会导致程序崩溃
QThread:线程必须自行等待
QThread:在线程仍在运行时保持原状
我想了解我做错了什么。
首先,如何让工作线程在完成工作后安全退出?
何时调用worker中的 del 函数?
我应该在某处没有退出()吗?或退出()
现在退出工作人员已完成所有工作
worker.exit()
我不确定该线程是否被彻底终止,我将不胜感激任何有关如何使用接受任何简单函数,执行函数,返回并完全停止的泛型工作者的建议
如果有所不同,我在Windows上使用PyQt4。