【发布时间】:2017-03-15 01:31:26
【问题描述】:
我开发了一个程序,它不断地“监视”一个特定的文件夹,当一些图像被复制到那个文件夹中时,从另一个类中调用一个函数并开始处理。这些图像很大的问题,所以每当图像处理功能启动时,用户界面都会冻结,直到过程结束。我了解到 QThread 可能是解决方案,但是当我在课堂上有很多功能时,我无法弄清楚如何应用......
要更具体,请参阅步骤顺序。
class Main(QtGui.QMainWindow):
def __init__():
functions = Functions()
...
self.something.signal.connect(self.functions.doStuff)
class Functions(QtCore.QObject):
def __init__():
imProc = ImageProcessing()
def doStuff():
initialImage = loadimage(...)
processedImage = imProc.process1(initialImage)
class ImageProcessing(QtCore.QObject)
def __init__():
def process1(original_image):
do maximum likelihood on the image
return segmented image
def process2(original_image):
do another image processing task
return segmented image
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
main = Main()
main.show()
main.exec_()
问题是当 process1() 运行时主窗口冻结...您能告诉我如何在后台单独运行 process1() 吗?
提前致谢!
【问题讨论】:
-
如果不知道要在线程中运行的方法的内容,就无法以线程安全的方式回答。
-
@three_pineapples 我想在单独的线程上运行包含最大似然分割方法的 function1() 并返回分割后的图像。你怎么看,有可能吗?
-
@three_pineapples 我无法弄清楚如何运行 process1(image) 函数,它不会冻结主 UI。我不必在 ui 上显示任何内容,所以基本上我不需要发出任何值(或者我错了?)。该函数返回一个图像,然后将其保存到从中复制 original_image 的文件夹中。我必须详细说明最大似然算法吗?或者你需要什么信息?谢谢
标签: python multithreading pyqt qthread