python - Python-处理队列输出的If语句未正确处理所有输出
问题描述
我通过队列接收数据更新,为了确定更新是更新的订单还是更新的市场价格,我需要运行一个 if 语句,以查看正在接收哪个自定义类。这工作正常,我可以看到正在接收正确的类,并且 if 语句(或至少这部分)正常工作。
我苦苦挣扎的地方是我有 2 个函数,一个更新订单并将它们以某种格式输入第二个函数,然后将市场数据(带有订单)格式化并以可读格式输出。
功能本身可以正常工作,因为如果我插入预期的数据,我会得到正确的输出......但是我正在努力让我的头脑正确接收数据,因为这似乎是导致问题的原因。
while True:
combined_books = market_queue.get()
order_books = []
market_books = []
for y in combined_books:
print(y)
if isinstance(y, MarketBook):
market_books.append(y)
time_stamp = datetime.now()
print(time_stamp, "Running for: ", time_stamp - start_time,
"======================================================")
update_market_book(market_books, mb, uo, market_catalogues, mkt_runners, profitloss, trading, False,
start_time, eo)
elif isinstance(y, CurrentOrders):
order_books.append(y)
uo = update_orders(order_books, mkt_runners, profitloss, trading, eo, mb)
time_stamp = datetime.now()
print(time_stamp, "Running for: ", time_stamp - start_time,
"======================================================")
update_market_book(market_books, mb, uo, market_catalogues, mkt_runners, profitloss, trading, False,
start_time, eo)
else:
print('Its all gone horribly wrong: ', y)
因此,发生的情况如下:
1) 如果我收到市场数据更新,会触发 update_market_book 功能并且该功能正常工作。
2)如果我收到一个订单更新,这被正确识别,但不更新 market_book (即在 2 个函数中,update_orders 触发,但是没有 market_books 来填充 update_market_books 函数的第一个变量,因此它只是显示空白)。
3) 下一次市场数据更新通过时,之前的订单正确显示。
所以本质上,我不明白的是,为什么在本节中:
elif isinstance(y, CurrentOrders):
order_books.append(y)
uo = update_orders(order_books, mkt_runners, profitloss, trading, eo, mb)
time_stamp = datetime.now()
print(time_stamp, "Running for: ", time_stamp - start_time,
"======================================================")
update_market_book(market_books, mb, uo, market_catalogues, mkt_runners, profitloss, trading, False,
start_time, eo)
market_books 是空白的,当它已经被先前的更新填充和/或更重要的是,我如何确保它填充了最后更新的 market_books (正确)触发了 if 语句的第一部分。
希望这是有道理的,并且对于 Python 专家来说可能真的很简单,也许是一天中的时间,但我似乎无法弄清楚这里的逻辑,所以任何帮助将不胜感激。
解决方案
推荐阅读
- javascript - Ace 编辑器中的 RTL 支持 - 箭头键
- react-native - 如何从外部重置特定的堆栈导航器?
- ios - Swift:如何将 pod 链接到我自己的框架
- c# - 我的 Windows 窗体应用程序中的数据类型不匹配错误
- macos - 为 OSX 路径版本问题编译 QT5 应用程序
- jquery - 如何在多个输入中选择单个输入值?
- mysql - 是什么导致 [错误] WSREP:在恢复时无法从 Galera 节点中的 '' 解析 UUID
- angular - 在 Angular 中保留 mat-select 的值
- python - 使用 Python 实时绘制传感器数据
- angular - Angular Material Stepper - 如何动态创建组件以加载到步骤中