myo*_*oan 5 python events multithreading pygame ipython
我使用一个单独的线程pygame.event.get()在 Ubuntu 上调用了很长时间,没有任何问题。但是 MacOS 会抛出异常'NSInternalInconsistencyException', reason: 'nextEventMatchingMask should only be called from the Main Thread!';和 Windows 报告窗口(Not answering)在正常执行几秒钟后,我假设有相同的解释,这意味着 Linux 与其他操作系统不同,可以容忍这种软件设计。
是否有任何解决方法可以在单独的线程中保持清空事件队列,或者这是否基本上意味着 python 2.7 上的 pygame 1.9.1 根本无法以这种方式工作?
我知道 GUI 事件通常在主线程中处理,但我的 Python 库旨在与 ipython 一起使用。根据设计,主线程,即用户的 ipython 单元可能不执行任何操作或 CPU 贪婪的循环,因此它无法处理pygame.event.get().
只能从其他线程发布事件,但事件队列必须在主线程中处理。请参阅以下文档pygame.event:
[...] 事件子系统应该从主线程调用。[...]
但是,如果您继续阅读
[...] 如果您想从其他线程将事件发布到队列中,请使用
pygame.fasteventpygame与事件和队列交互的模块。[...]
参见pygame.fastevent模块:
pygame.fastevent是 Bob Pendleton 的fastevent库的包装器。它提供了在多线程环境中使用的快速事件。
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |