gpt4 book ai didi

Python:将GUI进程与核心逻辑进程分离

转载 作者:太空狗 更新时间:2023-10-29 17:32:32 27 4
gpt4 key购买 nike

我正在开发 Python project用于处理计算机模拟,我也在为它开发一个 GUI。 (核心逻辑本身不需要 GUI。)我使用的 GUI 工具包是 wxPython,但我认为我的问题足够笼统,不必依赖它。

GUI 目前的工作方式是它在与 GUI 相同的进程和相同的线程上启动核心逻辑包(称为 garlicsim)。这行得通,但我知道这是一种有问题的方法,因为如果核心逻辑需要进行一些困难的计算,GUI 就会挂起,我认为这是 Not Acceptable 。

我该怎么办?

我听说可以选择在与 GUI 不同的进程中启动核心逻辑。这听起来很有趣,但我对此有很多疑问。

  1. 我是使用multiprocessing 包还是subprocess 包启动新进程?
  2. 如何从 GUI 进程轻松访问模拟数据?毕竟,它将存储在其他进程上。用户应该能够轻松顺畅地浏览模拟的时间线。如何做到这一点?

最佳答案

您可能会在这里找到一些灵感:http://wiki.wxpython.org/LongRunningTasks ,但它适用于多线程,而不是多处理。

基本思想

  • 对于多线程:使用事件队列在 GUI 和处理线程之间进行通信。
  • 对于多进程:可以使用subprocess 包,并使用子进程的stdin/stdout 与其通信。为此,您需要一个命令行 API,但它最终会派上用场,因为您可以进行独立于图形用户界面的单元测试。

您甚至可以通过套接字驱动 i/o 通信,这将使模拟的网络管理变得容易。

编辑:我刚看到您提到的 2.6-new multiprocessing 包。似乎是个不错的选择,您可以使用队列在进程之间进行通信。这是比较紧的耦合,大家可以根据自己的需要选择。

关于Python:将GUI进程与核心逻辑进程分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1961203/

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