我正在尝试做一个简单的设计,即用户向服务器请求一些数据,然后服务器返回一个随机数数组。
我需要一直更改数组,因此我将代码放入了while循环中。现在,我希望循环和服务器同时运行,并且当用户请求数组时,在请求数组时发送该数组的“副本”。
这是我尝试过的:
import asyncio, websockets, json, numpy as np, multiprocessing as mp
result = []
def server():
print('Server running')
asyncio.get_event_loop().run_until_complete(websockets.serve(echo, 'localhost', 8765))
asyncio.get_event_loop().run_forever()
async def echo(websocket, path):
async for message in websocket:
msg_in = json.loads(message) # Converts JSON string to dictionary.
if msg_in['instr']=="request_data":
print(result)
msg_out={'data': str(result)}
await websocket.send(msg_out['data'])
def randomLoop():
print('Loop running')
while True:
result_array = np.rint(100*np.random.rand(3))
result = result_array.tolist()
serverThread = mp.Process(target=server)
loopThread = mp.Process(target=randomLoop)
serverThread.start()
loopThread.start()
serverThread.join()
loopThread.join()
这是我之前的代码(没有循环):
import asyncio, websockets, json
result = [1,2,3]
async def echo(websocket, path):
async for message in websocket:
msg_in = json.loads(message) # Converts JSON string to dictionary.
if msg_in['instr']=="request_data":
print(result)
msg_out={'data': str(result)}
await websocket.send(msg_out['data'])
asyncio.get_event_loop().run_until_complete(websockets.serve(echo, 'localhost', 8765))
asyncio.get_event_loop().run_forever()
while循环之前的代码运行良好,现在我不知道该怎么办。我也不知道多处理的工作原理,我只是在尝试。