【发布时间】:2022-01-06 16:14:16
【问题描述】:
这里是python新手!
我正在尝试为自己编写一个小程序,它基本上是从不同的交易所获取价格信息并进行比较,到目前为止它运行良好,但老实说,我希望在性能和效率方面做得更好。
我所说的效率是指我的程序是逐步检查价格并打印结果。我的问题是我可以将其转换为同时检查来自不同交易所的价格并同时打印它们吗?
下面是我写的部分代码:
#Novadax
symbol_novadax = coin_list[i] + "_USDT"
response_novadax = requests.get('https://api.novadax.com/v1/market/ticker?symbol=' + symbol_novadax)
novadax_dic = json.loads(response_novadax.content)
try:
if "ask" in novadax_dic["data"]:
novadax_bid_price = float(novadax_dic["data"]["bid"])
print("novadax_bid_price "+str(novadax_bid_price))
novadax_ask_price = float(novadax_dic["data"]['ask'])
print("novadax_ask_price " + str(novadax_ask_price))
if (max_bid_val < novadax_bid_price):
max_bid_val = novadax_bid_price
max_bid_place = "novadax"
if (min_ask_val > novadax_ask_price):
min_ask_val = novadax_ask_price
min_ask_place = "novadax"
except:
print(coin_list[i] + " not in novadax")
if is_run == False:
telegram_send.send(messages=["False novadax"], parse_mode=None)
break
#ZT
symbol_zt = coin_list[i] + "_USDT"
response_zt = requests.get('https://www.ztb.im/api/v1/tickers')
zt_dic = json.loads(response_zt.content)
# print(next(item for item in zt_dic["ticker"] if item["symbol"] == symbol_zt))
try:
if "buy" in next(item for item in zt_dic["ticker"] if item["symbol"] == symbol_zt):
zt_bid_price = float(next(item for item in zt_dic["ticker"] if item["symbol"] == symbol_zt)["buy"])
print("zt_bid_price "+str(zt_bid_price))
zt_ask_price = float(next(item for item in zt_dic["ticker"] if item["symbol"] == symbol_zt)['sell'])
print("zt_ask_price " + str(zt_ask_price))
if (max_bid_val < zt_bid_price):
max_bid_val = zt_bid_price
max_bid_place = "zt"
if (min_ask_val > zt_ask_price):
min_ask_val = zt_ask_price
min_ask_place = "zt"
except:
print(coin_list[i] + " not in zt")
if is_run == False:
telegram_send.send(messages=["False zt"], parse_mode=None)
break
我的输入是这样的:
zt_bid_price = 0.12
zt_ask_price = 0.14
novadax_bid_price = 0.13
novadax_ask_price= 0.14
更清楚地说,我不会同时得到这些结果。我的意思是它按顺序打印,我计划在未来添加更多的交换,这意味着如果我决定在代码末尾打印所有内容,这会给我带来稍微旧的数据。有谁知道我该如何解决这个问题?
提前致谢!
【问题讨论】:
-
这些数据必须有多“旧”才会成为问题?如果您可以同时执行所有请求,您仍然需要等待最慢的请求,这意味着最快的请求现在将是“旧的”。
-
@ScottHunter 我以前没有考虑过,但到目前为止,我正在使用这个程序来检查 60 种不同硬币的价格,并且需要一分钟多的时间来检查它们。因此,如果我要使用相同的代码结构并在最后打印结果,那将给我相当过时的结果。
标签: python json python-3.x python-requests