Python-Ausnahme in Thread Thread-1 (wird höchstwahrscheinlich beim Herunterfahren des Interpreters ausgelöst)?
Mein Freund und ich haben an einem großen Projekt gearbeitet, um Python und PyGame zu lernen und Spaß zu haben. Im Grunde ist es eine KI-Simulation eines kleinen Dorfes. Wir wollten einen Tag / Nacht-Zyklus, also fand ich eine gute Möglichkeit, die Farbe einer gesamten Oberfläche mithilfe von Numpy zu ändern (speziell das Tutorial zum Überblenden).http://www.pygame.org/docs/tut/surfarray/SurfarrayIntro.html
Ich habe es in den Code implementiert und es FUNKTIONIERT, ist aber extrem langsam, wie <1 fps langsam. Also schaue ich in Threading (weil ich es irgendwann hinzufügen wollte) und fand diese Seite auf Queues -Informationen zum Warteschlangenmodul in Python (wie es ausgeführt wird)
Ich verbringe ungefähr 15 Minuten damit, ein Basissystem zu erstellen, aber sobald ich es ausführe, wird das Fenster geschlossen und es wird angezeigt
Exception in thread Thread-1 (most likely raised during interpreter shutdown):
EDIT: Dies ist buchstäblich alles, was es sagt, kein Traceback-Fehler
Ich weiß nicht, was ich falsch mache, aber ich gehe davon aus, dass mir etwas Einfaches fehlt. Ich habe die notwendigen Teile des Codes unten hinzugefügt.
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()
Wenn jemand helfen könnte, wäre es sehr dankbar. Vielen Dank.