2017-06-04 105 views
1

對於asyncio來說,我很新,所以很多東西離我的理解還有很遠的距離,無論如何。如何使用asyncio同時運行2個循環

我有一個主要的while循環,基本上只是使用PyGame在屏幕上繪製一些東西,而我想要做的是,異步運行另一個while循環,不斷更新一些要呈現的數據。

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

只需創建[兩個不同的任務](https://asyncio.readthedocs.io/en/latest/hello_world.html#creating-tasks)。 'self.draw()'應該是異步的。必要時使用['loop.run_in_executor'](https://asyncio.readthedocs.io/en/latest/threads.html)。 – Vincent

回答

0

嘗試線程:

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() 

線程將同時運行這兩個進程!

+0

感謝您的回覆,但我認爲asyncio會以任何方式完成這項工作......我不想從一開始就使用線程。 – Paradisee