Если это твоя наколеночная софтина для какой-то минимальной автоматизации, то вообще пофиг как оно там написано.
Ну и очередь - вполне норм вещь для твоей задачи. Пишешь сколько хочешь, а второй поток читает из очереди когда ему надо.
еще минутку вашего внимания, софтина будет действительно "наколеночная" , обмен сделал через глобальную переменную, как простейшее решение, думаю другие методы будут избыточными
import time
import websocket
import threading
from time import sleep
import json
from datetime import datetime
def on_message(ws, message):
global buys_vol, sales_vol
msg = json.loads(message)
lock.acquire()
if msg['data']['m'] == true:
sales_vol += float(msg['data']['q'])
else:
buys_vol += float(msg['data']['q'])
lock.release()
true = True
false = False
lock = threading.Lock()
buys_vol = 0
sales_vol = 0
ws = websocket.WebSocketApp("wss://stream.binance.com:9443/stream?streams=btcusdt@aggTrade",on_message = on_message)
wst = threading.Thread(target=ws.run_forever)
wst.start()
while True:
time.sleep(3)
lock.acquire()
print("%s, buy vol:%s, sale vol:%s" % (datetime.now().strftime('%H:%M:%S'), buys_vol,sales_vol ))
buys_vol = 0
sales_vol = 0
lock.release()