是否有解决方法可以在单独的线程中清空事件队列?

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().

Rab*_*d76 0

只能从其他线程发布事件,但事件队列必须在主线程中处理。请参阅以下文档pygame.event

[...] 事件子系统应该从主线程调用。[...]

但是,如果您继续阅读

[...] 如果您想从其他线程将事件发布到队列中,请使用pygame.fasteventpygame与事件和队列交互的模块。[...]

参见pygame.fastevent模块:

pygame.fastevent是 Bob Pendleton 的fastevent库的包装器。它提供了在多线程环境中使用的快速事件。