2017-06-04 1 views
1

Je suis assez nouveau pour asyncio, tellement de choses sont encore loin de ma compréhension, de toute façon. J'ai une boucle while principale qui dessine simplement des choses à l'écran en utilisant PyGame, et ce que je veux faire, c'est exécuter une autre boucle asynchrone, qui continue à mettre à jour certaines données à rendre.Comment exécuter 2 boucles en même temps en utilisant asyncio

async def update(reader, writer): 
    while True: 
     json_data = await reader.read(1000) 
     self.json_data = json.loads(json_data) 

def run(self): 
    while True: 
     self.draw() 
+1

Créez simplement [deux tâches différentes] (https://asyncio.readthedocs.io/en/latest/hello_world.html#creating-tasks). 'self.draw()' devrait être asynchrone cependant. Utilisez ['loop.run_in_executor'] (https://asyncio.readthedocs.io/en/latest/threads.html) si nécessaire. – Vincent

Répondre

0

filetage Essayez:

import threading 

async def update(reader, writer): 
    while True: 
     json_data = await,reader.read(1000) 
     self.json_data = json.loads(json_data) 

def run(self): 
    while True: 
     self.draw() 

t = threading.Thread(target=update,args=(reader,writer)) 
t2 = threading.Thread(target=run,args=(self)) 
t.start() 
t2.start() 

Threading d'exécuter les deux processus à la fois!

+0

Merci pour la réponse, mais je pensais que asyncio ferait le travail en aucune façon ... Je ne voulais pas utiliser les discussions depuis le début. – Paradisee