小编roa*_*r38的帖子

Binance websocket实时绘图没有阻塞代码?

我正在尝试使用 WebSocket 从币安 (ETHUSDT) 获取并绘制实时数据。获取数据没问题,但使用 matplotlib 时无法获得实时绘图。

在代码中,我每次收到消息时都会更新收盘价,并尝试实时绘制该数据。该图显示在屏幕上,但会阻止进一步的代码执行。我必须手动关闭绘图才能收到下一条消息。

我的问题是:如何在不阻塞代码的情况下实时绘制数据?

import websocket, json
import matplotlib.pyplot as plt
import numpy as np

TRADE_SYMBOL = "ETHUSDT"
SOCKET = "wss://stream.binance.com:9443/ws/ethusdt@kline_1m"

closes = np.array([])    

#  CREATING AXIS
plt.axis([0, 1000, 0, 1])

def on_message(ws, message):
    global closes
    message = json.loads(message)

    candle = message['k']
    close = candle['c']
    closes = np.append(closes, float(close))

    # PLOTTING HERE
    plt.plot(closes)
    plt.show()


ws = websocket.WebSocketApp(SOCKET, on_message=on_message)
ws.run_forever()
Run Code Online (Sandbox Code Playgroud)

python matplotlib websocket real-time-updates binance

6
推荐指数
1
解决办法
3067
查看次数