我正在使用python API为许多证券下载日内数据(5分钟柱)。 但是这个过程非常缓慢,我想我并没有在并发请求方面尽最大努力。
不幸的是,我发现API
非常不友好(我主要使用blpapi
包装来绕过消息传递,但是如果需要,我很想直接使用bloomberg api)。
如果有人想要如何调整我的请求以减少耗时,我会很高兴
如果不知道如何构建请求,很难诊断性能问题,但我想大部分时间都花在等待Bloomberg响应上。你可能想看看CorrelationID
字段。这允许您在解析响应之前发送多个请求,然后确定哪些响应消息对应于哪些请求。
看看Developer's Guide的第58页给你一些想法。
在python中代码看起来像
cid = blpapi.CorrelationId(my_unique_identifier)
session.sendRequest(request, correlationId=cid)
您需要花费大部分时间与Bloomberg建立连接而不是实际下载。您可以保存连接对象并重复使用它。
这个包xbbg
使整个过程变得非常简单:
from xbbg import blp
# Connection instance will be shared at the backend
blp.create_connection()
tickers = [.....]
dt = '...'
for t in tickers:
# Every download in the loop shares the same connection
blp.bdib(t, dt)