[英]Transferring code from a file "main.py " in Jupyter Notebook
我正在嘗試在 Jupiter 筆記本中運行代碼,但其中的數字不運行,請幫助我使用“matplotlib”庫在 pandas DataFrame 中顯示 BTC 圖
import websockets
import asyncio
import json
import time
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
fig.show()
xdata = []
ydata = []
def update_graph():
ax.plot(xdata, ydata, color='g')
ax.legend([f"Last price: {ydata[-1]}$"])
fig.canvas.draw()
plt.pause(0.1)
async def main():
url = "wss://stream.binance.com:9443/stream?streams=btcusdt@miniTicker"
async with websockets.connect(url) as client:
while True:
data = json.loads(await client.recv())['data']
event_time = time.localtime(data['E'] // 1000)
event_time = f"{event_time.tm_hour}:{event_time.tm_min}:
{event_time.tm_sec}"
print(event_time, data['c'])
xdata.append(event_time)
ydata.append(int(float(data['c'])))
update_graph()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
只需刪除此語句: if __name__ == '__main__':
Jupyter 運行代碼的方式與正常的 Python 不同。
當您使用python myfile.py
運行代碼時,它會將名為__name__
的變量設置為main
。 但是當 Jupyter 運行您的代碼時,它不會設置變量。
因此,當您說if __name__ == '__main__'
時,它永遠不會在 Jupyter 中執行,因為__name__
永遠不會是main
。
因此,解決方案是刪除if
語句,只保留它下面的行。
改變
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
至
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
下午好:我在啟動時發布錯誤:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.