当前位置: 首页 > 面试题库 >

在长时间运行的任务期间保持GUI响应

公羊学义
2023-03-14
问题内容

在应用程序执行大量CPU处理时保持GUI响应是有效的GUI编程的挑战之一。

这是有关如何在wxPython中执行此操作的很好的讨论。总结起来,有3种方法:

  1. 使用线程
  2. 使用wxYield
  3. 将工作分块并在IDLE事件处理程序中完成

发现哪种方法最有效?也欢迎其他框架(例如Qt,GTK或Windows API)中的技术。


问题答案:

线程。它们是我一直追求的目标,因为您可以在所需的每个框架中进行操作。

一旦习惯了一种语言/框架中的多线程和并行处理,您就可以在所有框架上都表现出色。



 类似资料:
  • 我在context.xml文件中定义了一个Spring调度任务,它每分钟运行一次。该任务调用postgres存储过程。存储过程运行时可以持续一分钟以上。如果当前运行没有完成,spring框架会调用相同的调度程序吗?谢谢,

  • 我正在尝试将一个向服务器发送消息的异步任务迁移到RxJava。该任务大致执行以下操作: 1) 创建将要发送的消息(保存到数据库) 2)向用户显示消息(状态为“发送”) 3)将消息发送到服务器(下面的代码段) 4)将消息标记为已发送或失败(保存到数据库) 5)更新UI 我创建了所需的Rx链,部分如下所示: 当我订阅上述内容时,我会得到一个一次性的。通常,我会将其添加到CompositeDisposa

  • 问题内容: 我的应用程序运行一些数据库查询,这可能需要很长时间。 在执行这些查询时,我的应用程序似乎死机了,看起来该应用程序已停止工作。 我需要使用progressbar来避免此问题,但是我不确定如何预测查询执行所花费的时间。 运行查询的代码如下 如何显示进度条以显示查询的进度? 问题答案: 您可以用来解决这类问题。 首先定义一个类的全局变量, 例如 然后在执行查询(如事件或其他任何内容)的过程中

  • 我试着运行我的第一个颤振项目,但我不断地得到这个错误。 失败:构建失败,有一个异常。 > 哪里出错了:配置根项目'android'时出现问题。 无法解析配置“:classpath”的所有项目。无法下载gradle。jar(com.android.tools.build:gradle:3.5.0)无法获取资源的https://dl.google.com/dl/android/maven2/com/a

  • TL;DR:我们有长时间运行的导入,它们似乎持有父分区表的锁,即使没有直接引用父表。 在我们的系统中,我们有和。库存往往有 200k 左右的项目,我们的访问模式通过使用本机分区对表进行分区是有意义的(我们在 Postgres 12 上)。换句话说,每个清单都有自己的分区inventory_items表。这是通过以下 DDL 完成的: 在我们的应用程序代码中,当通过Web仪表板创建清单时,我们会通过

  • 问题内容: 我有一个python celery-redis队列处理一次上传和下载值得一次演出和大量演出的数据。 很少有上传内容需要花费几个小时的时间。但是,一旦完成了这样的任务,我就目睹了这种奇怪的芹菜行为:芹菜调度程序通过将其再次发送给工作人员来重新运行刚刚完成的任务(我正在运行一个工作人员),并且它在同一时间发生了2次任务! 有人可以帮助我知道为什么会发生这种情况以及如何预防吗? 这些任务肯定

  • 我有一个压缩图像的任务,它在图像中使用了许多循环: 我在普通线程中运行此方法,如下所示: 或者在后台工作线程中运行 问题是:这种方法有时会出错,在接收无效输入时会导致无限循环。在这种情况下,它将永远运行,并损害CPU,即使当设备的屏幕关闭时,这会增加设备的温度(如果我使用工作线程,它还会阻止等待队列中的其他任务)。 我想我需要设置一个超时来终止长时间运行的任务。在正常Java线程中实现这一点的最佳

  • 问题内容: 我有一个用Go语言编写的运行时间较长的服务器。Main会触发执行程序逻辑的多个goroutine。在那之后主要没有什么用。一旦主程序退出,程序将退出。我现在使用的使程序运行的方法只是对fmt.Scanln()的简单调用。我想知道其他人如何阻止main退出。以下是一个基本示例。在这里可以使用哪些想法或最佳做法? 我考虑过创建一个通道并通过接收该通道来延迟main的退出,但是我认为如果我的