gpt4 book ai didi

python - 当 QThread() 停止运行时(Python),我是否需要手动调用 .quit() 方法?

转载 作者:太空宇宙 更新时间:2023-11-03 19:09:45 24 4
gpt4 key购买 nike

我正在编写一个利用 QThreads 的多线程应用程序。我知道,为了启动线程,我需要重写 run() 方法并在某处使用 thread.start() 调用该方法(在我的例子中)在我的 GUI 线程中)。

但是,我想知道是否需要在任何地方调用 .wait() 方法,并且我是否应该在线程退出后调用 .quit()完成,还是自动完成?

我正在使用 PySide。

谢谢

最佳答案

两个答案都取决于您的代码正在执行的操作以及您对线程的期望。

如果您使用线程的逻辑需要同步等待 QThread 完成的那一刻,那么是的,您需要调用 wait()。然而,除了应用程序启动和关闭等非常特殊的情况外,这种要求是草率线程模型的标志。使用 QThread::wait() 表明蠕动顺序操作,这意味着您实际上没有同时使用线程。

quit() 退出 QThread 内部事件循环,这不是强制使用的。长时间运行的线程(与单任务工作线程相对)必须具有某种类型的事件循环 - 这是一个通用语句,并非特定于 QThread。您可以自己执行此操作(以某种 while(keepRunning) { } 循环的形式),也可以使用 Qt 提供的事件循环,通过在以下位置调用 exec() 来触发该事件循环:你的 run() 方法。前一个实现可以由您完成,因为您确实提供了keepRunning 条件。 Qt 提供的实现对您是隐藏的,这里调用 quit() - 它在内部只是在 Qt 内设置某种类似的标志。

关于python - 当 QThread() 停止运行时(Python),我是否需要手动调用 .quit() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13376448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com