Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将此代码修改为异步的?_Python_Python 3.x_Asynchronous_Websocket_Pygame - Fatal编程技术网

Python 如何将此代码修改为异步的?

Python 如何将此代码修改为异步的?,python,python-3.x,asynchronous,websocket,pygame,Python,Python 3.x,Asynchronous,Websocket,Pygame,我正在尝试使用Python和库为游戏创建一个客户端 这是我当前的代码(删除了无关的内容): 目前,我已经设法按照一些文档进行了操作,但我的游戏似乎跟不上从websocket接收到的消息,并且落后了,特别是当同时接收到多个操作时。如何更改此代码以避免发生这种情况?我本人是异步化的初学者,不太熟悉wait/async语法。非常感谢进一步的指导 编辑:我正在使用Python 3.6 import pygame import websockets, asyncio from game import *

我正在尝试使用Python和库为游戏创建一个客户端

这是我当前的代码(删除了无关的内容):

目前,我已经设法按照一些文档进行了操作,但我的游戏似乎跟不上从websocket接收到的消息,并且落后了,特别是当同时接收到多个操作时。如何更改此代码以避免发生这种情况?我本人是异步化的初学者,不太熟悉wait/async语法。非常感谢进一步的指导

编辑:我正在使用Python 3.6

import pygame
import websockets, asyncio
from game import *

connection = websockets.connect("wss://example.com/ws")
tanklist = []

pygame.init()
screen = pygame.display.set_mode((1600, 800))
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((50, 50, 50))
screen.blit(background, (0, 0))
pygame.display.flip()

def redraw():
        n = len(tanklist)
        for i in range(n):
            tanklist[i].draw(screen)
            m = len(tanklist[i].bullets)
            for j in range(m):
                tanklist[i].bullets[j].draw(screen)
        pygame.display.update()

def consumer(message):

    header = message[0]
    data = message[1]
    screen.blit(background, (0,0))
    #Long block of code that decides to shoot, move, rotate, etc.

    redraw()

async def tanks():
    async with connection as websocket:
        while 1:
            message = json.loads(await websocket.recv())
            print(message)
            consumer(message)

asyncio.get_event_loop().run_until_complete(tanks())