1

我的情况是,我需要拆开一个 GUI 应用程序(用 wx 编写并经过扭曲,在 MS Windows 上运行),取出核心逻辑并将其作为 cron 作业部署在没有 GUI 环境的 linux 服务器上。

我已经用 threading.timer 替换了一些 wx.CallLater 和 wx.CallAfter。显然它不起作用。原始代码在多线程环境中表现不佳。这可能是因为一些底层库不是线程安全的。线程也可能不会以与扭曲相同的方式调度作业。

所以这是 GUI 应用程序的典型工作流程:

  1. 用户切换按钮以启动实时数据读取器(用 C 编写)

  2. 切换按钮变为绿色后,表示阅读器已启动并正在运行。用户继续在不同的实时数据类型之间切换

  3. 当新的数据集准备好时,用户将开始使用应用程序中的其他功能。

我的问题:

  1. 如何使用 twisted 重新创建上述工作流程?twisted 中的哪些工具允许我等待步骤 2 中提到的实时数据读取器准备就绪?

  2. 一切都会在主线程中“发生”吗?

4

1 回答 1

1

如何使用 twisted 重新创建上述工作流程?twisted 中的哪些工具允许我等待步骤 2 中提到的实时数据读取器准备就绪?

reactor.callLater- http://twistedmatrix.com/documents/current/core/howto/time.html

一切都会在主线程中“发生”吗?

是的 - http://twistedmatrix.com/documents/current/core/howto/reactor-basics.html

于 2013-02-28T18:18:01.880 回答