Python Исключение в потоке Thread-1 (скорее всего, возникает при выключении интерпретатора)?

Мой друг и я работали над большим проектом, чтобы выучить и развлечься на python и PyGame. По сути это искусственный интеллект маленькой деревни. мы хотели цикл день / ночь, поэтому я нашел изящный способ изменить цвет всей поверхности, используя numpy (в частности, учебник по плавному переходу) -http://www.pygame.org/docs/tut/surfarray/SurfarrayIntro.html

Я реализовал его в коде, и он работает, но очень медленно, как <1 кадров в секунду. так что я смотрю в потоке (потому что я хотел добавить его в конце концов) и нашел эту страницу в очереди -Изучение модуля очереди в Python (как его запустить)

Я трачу около 15 минут на создание базовой системы, но как только я запускаю ее, окно закрывается, и на нем написано

Exception in thread Thread-1 (most likely raised during interpreter shutdown):

РЕДАКТИРОВАТЬ: Это буквально все, что он говорит, нет ошибки трассировки

Я не знаю, что я делаю неправильно, но я предполагаю, что упускаю что-то простое. Я добавил необходимые части кода ниже.

q_in = Queue.Queue(maxsize=0)

q_out = Queue.Queue(maxsize=0)

def run():    #Here is where the main stuff happens
    #There is more here I am just showing the essential parts
    while True:
        a = abs(abs(world.degree-180)-180)/400.

        #Process world
        world.process(time_passed_seconds)

        blank_surface = pygame.Surface(SCREEN_SIZE)
        world.render(blank_surface)    #The world class renders everything onto a blank surface
        q_in.put((blank_surface, a))
        screen.blit(q_out.get(), (0,0))

def DayNight():
    while True:
        blank_surface, a = q_in.get()
        imgarray = surfarray.array3d(blank_surface)  # Here is where the new numpy       stuff starts (AKA Day/Night cycle)
        src = N.array(imgarray)
        dest = N.zeros(imgarray.shape)
        dest[:] = 20, 30, 120
        diff = (dest - src) * a
        xfade = src + diff.astype(N.int)

        surfarray.blit_array(blank_surface, xfade)
        q_out.put(blank_surface)
        q_in.task_done()

def main():
    MainT = threading.Thread(target=run)
    MainT.daemon = True
    MainT.start()

    DN = threading.Thread(target=DayNight)
    DN.daemon = True
    DN.start()

    q_in.join()
    q_out.join()

Если кто-то может помочь, это будет очень признателен. Спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос