我正在用Python编写一个应用程序(肯定不适合该任务,但无论如何我都在做)。该应用程序的一部分需要一个音频播放器,我正在使用它,因为它似乎最易于使用,并且会执行我需要的功能(加载OGG,MP3和WAV;播放音频;暂停音频) ;获取当前时间戳记。
我知道我将需要在单独的子进程中运行音频内容(或者,多进程处理这个问题,我想这是一个子进程)。但是,运行pyglet.app.run()基本上会锁定该过程,直到音频播放完毕。我看不到使进程暂停的方法,因为您无法从进程外部访问进程的地址空间(因此,我无法运行该进程,然后再运行player.pause())。
总体来说,我有点困惑,不胜感激如何使Pyglet进行多处理工作,以便我可以随意播放和暂停音频(这全部在GUI中实现,该GUI处理了很多其他的东西)。
答案 0 :(得分:0)
pyglet.app.run()
开始的事情。实际上,它阻止了当前线程(而不是进程),并计划了GUI框架内发生的所有事件。如果您想在两者之间运行自己的东西,则必须通过事件循环来完成,请参见https://pyglet.readthedocs.io/en/latest/programming_guide/time.html#guide-calling-functions-periodically。
或者,您可以尝试创建一个新线程(而不是进程),但是在访问可能也从pyglet事件循环访问的内容时,您必须小心。
GUI框架通常是单线程的,而且通常也不是线程安全的(我不了解pyglet的详细信息)。如果创建其他线程,则在与另一个线程的事件循环进行交互时必须非常小心。