pyglet可以在新线程中运行吗?

Bri*_*ter 5 python multithreading pyglet python-2.7

我想在单独的线程中运行 pyglet,以便我可以实现输入的用户界面,而不会被pyglet.app.run().

import pyglet
class Window(pyglet.window.Window):
    def __init__(self):
        pyglet.window.Window.__init__(self, visible=True)
        self.push_handlers(on_draw=self.on_draw)
        self.im = pyglet.resource.image('image.jpg')
        pyglet.app.run()

    def on_draw(self):
        self.clear()

import threading
class Thread(threading.Thread):
    def run(self):
        w = Window()
Run Code Online (Sandbox Code Playgroud)

跑步

Window()
Run Code Online (Sandbox Code Playgroud)

工作正常。然而,运行

t = Thread()
t.start()
Run Code Online (Sandbox Code Playgroud)

结果为Segmentation fault (core dumped),这是由对 的调用引起的pyglet.resource.image()。省略该调用可以消除该问题。

具体来说,是什么导致了这个问题,我该如何纠正它?更一般地说,使用 pyglet 渲染窗口同时允许其他程序执行的推荐方法是什么?有一个更好的方法吗?