Python 在出现分段错误的线程中加载动画
Python loading animation in a thread giving segmentation fault
这是我创建的代码,用于使用 pyglet.resource.animation() 函数在后台加载动画,而应用程序会执行一些其他操作。
import pyglet
import threading
animations = dict()
class LoadingThread(object):
def __init__(self):
thread = threading.Thread(target=self.run, args=())
thread.start() # Start the execution
def run(self):
""" Method that runs forever """
loadAnimations()
print("Loaded all animations.")
def loadAnimations():
global animations
print("In loadAnimations")
for animation in os.listdir(os.getcwd()):
if animation.endswith(".gif"):
print(animation)
#Gives segmentation fault here
animations[animation] = pyglet.resource.animation(animation)
print("Loaded animations")
thread = LoadingThread()
在没有线程的情况下正常调用时运行良好。
如果pyglet有其他处理后台加载动画的方法,请指教。
谢谢。
正如@Frank Merrow 所建议的。这里的问题是我正在使用该功能
pyglet.resource.animation("filename.gif")
也在我的主线程中运行。所以它正在创建一个分段错误。
我发现了另一个函数也可以加载动画。
pyglet.image.load_animation("filename.gif")
使用它解决了我的问题。
也可以通过同步启动两个线程来解决这个问题运行主流程和后台工作
这是我创建的代码,用于使用 pyglet.resource.animation() 函数在后台加载动画,而应用程序会执行一些其他操作。
import pyglet
import threading
animations = dict()
class LoadingThread(object):
def __init__(self):
thread = threading.Thread(target=self.run, args=())
thread.start() # Start the execution
def run(self):
""" Method that runs forever """
loadAnimations()
print("Loaded all animations.")
def loadAnimations():
global animations
print("In loadAnimations")
for animation in os.listdir(os.getcwd()):
if animation.endswith(".gif"):
print(animation)
#Gives segmentation fault here
animations[animation] = pyglet.resource.animation(animation)
print("Loaded animations")
thread = LoadingThread()
在没有线程的情况下正常调用时运行良好。 如果pyglet有其他处理后台加载动画的方法,请指教。
谢谢。
正如@Frank Merrow 所建议的。这里的问题是我正在使用该功能
pyglet.resource.animation("filename.gif")
也在我的主线程中运行。所以它正在创建一个分段错误。
我发现了另一个函数也可以加载动画。
pyglet.image.load_animation("filename.gif")
使用它解决了我的问题。
也可以通过同步启动两个线程来解决这个问题运行主流程和后台工作