J'ai deux fichiers python, l'un exécute une simulation dans pygame et l'autre prend des données et les représente graphiquement. Je veux qu'ils s'exécutent dans deux fenêtres distinctes, mais je veux que les données soient enregistrées pendant que la simulation est en cours d'exécution. J'ai essayé le multithreading et cela ne semble pas fonctionner.

Les deux fonctions sont juste de vraies boucles, et je veux qu'elles fonctionnent en parallèle.

def main():
    while True:
        clock.tick(simSpeed)

        # quit function
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        pendulum.update()
        drawWindow(screen, pendulum)

threading.Thread(target=main).start()
threading.Thread(target=graphData).start()
def graphData():
    while True:
        x = data.data["x"]
        y = data.data["y"]
        plot1 = plt.figure(1)
        plt.title("poopyhead")
        plt.plot(y, x)

        plot2 = plt.figure(5)
        plt.plot(x, y)

        plot1.clear()
        plot2.clear()

        plt.show()
        time.sleep(1)
1
Owen Moogk 27 févr. 2021 à 19:37

1 réponse

Meilleure réponse

Merci à tous pour votre aide. J'ai fini par refaire le rendu du graphique dans la même fenêtre chaque fois que la boucle while s'exécute. Fonctionne assez bien pour moi, et je pourrais simplement éviter complètement le multithreading.

0
Owen Moogk 8 mars 2021 à 18:11