Я пытаюсь создать небольшой проект, где пользователь запрашивает некоторые данные на сервере, а затем сервер возвращает массив случайных чисел.
Мне нужно все время менять массив, поэтому я поместил код в цикл 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 работал отлично, теперь я не знаю, что делать. Я также не знаю, как работает многопроцессорность, я просто пытался.