Python загрузка анимации в потоке с ошибкой сегментации - PullRequest
1 голос
/ 08 марта 2020

Вот код, который я создал для загрузки анимации в фоновом режиме с помощью функции 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, предложите.

Спасибо.

1 Ответ

0 голосов
/ 12 марта 2020

По предложению @Frank Merrow. Проблема была в том, что я использовал функцию pyglet.resource.animation("filename.gif") в моем основном потоке. Так что это создавало ошибку сегментации. Я нашел другую функцию, которая также может загружать анимацию.

pyglet.image.load_animation("filename.gif")

Использование этой проблемы решило мою проблему.

Также эту проблему можно решить, запустив два потока, синхронно запускающих основной поток и фоновую работу.

...