第二个函数执行后如何运行第三个函数?

时间:2016-05-23 09:31:08

标签: python multithreading pyqt4

这3个功能正在运行,但最后一个需要等到第一个和第二个执行。我可以使用time.sleep(),但我认为这不是正确的方法。我该如何解决?

 def convert_and_save(self):
    self.open()
    time.sleep(5)
    self.convertThread.start()
    time.sleep(5)
    self.saveThread.start()
def convert_and_save(self):
    self.open()
    self.convertThread.start()
    self.saveThread.start()
    self.convertThread.join()
    self.saveThread.join()

错误:AttributeError: 'ConvertThread' object has no attribute 'join'

这有效但暂停GUI :(

def convert_and_save(self):
    self.open()
    self.convertThread.start()
    while self.convertThread.isFinished() == False:
        time.sleep(0.1)
    self.saveThread.start()

1 个答案:

答案 0 :(得分:0)

我认为你可以使用

self.convertThread.join()
self.saveThread.join()

等待两个线程都结束执行。

请查看help("threading.Thread")了解更多可以使用线程执行的操作。

整个代码:

    def convert_and_save(self):
        self.open()
        time.sleep(5)
        self.convertThread.start()
        time.sleep(5)
        self.saveThread.start()

        self.convertThread.join()
        self.saveThread.join()

        # This is executed when both threads stopped