Python 使用基于csv数据的nsetools并行获取股票价格 CSV文件内容: 代码:

Python 使用基于csv数据的nsetools并行获取股票价格 CSV文件内容: 代码:,python,performance,python-2.7,csv,financial,Python,Performance,Python 2.7,Csv,Financial,目前,股票价格是使用生成器表达式按顺序获得的。计算当前投资价值需要18-25秒。有没有办法同时获得这些价格并计算当前的投资价值?我已经找到了存储库,在那里我一直致力于将nsetoolsAPI移动到基于DataFrame的方法,并使用线程来减少获取多个报价所需的时间 截至今天的最新版本v1.1.0目前已经实现了所有这些功能 但是,python2兼容性不能保证。如果您希望请求更多功能,请确保创建新版本。我将继续努力并不断更新回购协议。问题可能是nse,需要一些时间来获取数据。也许它可以在一个请求中获

目前,股票价格是使用生成器表达式按顺序获得的。计算当前投资价值需要18-25秒。有没有办法同时获得这些价格并计算当前的投资价值?

我已经找到了存储库,在那里我一直致力于将
nsetools
API移动到基于
DataFrame
的方法,并使用线程来减少获取多个报价所需的时间

截至今天的最新版本
v1.1.0
目前已经实现了所有这些功能


但是,
python2
兼容性不能保证。如果您希望请求更多功能,请确保创建新版本。我将继续努力并不断更新回购协议。

问题可能是
nse
,需要一些时间来获取数据。也许它可以在一个请求中获取多个股票。nsetools没有提供在一个请求中获取多个股票价格的功能。并行化该过程,不知道您可以使用nse打开多少连接。但是你可以进入N个进程,只要求一个sock并将其作为附加列保存到csv中,等待所有操作完成,然后进行求和。由于这些是通过internet进行的文件传输(我假设),它们是I/O绑定的,多个线程可以很好地传输文件。我尝试访问链接,github说页面没有找到,谢谢你指出。我已经更新了链接。请检查详细文档的链接。404未找到错误是的。我知道。这也是一个悬而未决的问题。我无法生成文档。如果一个人能用适当的文件开始一次公关,那将是非常有帮助的。代码是用docstrings正确注释的,因此文档只需使用sphinx(或任何替代工具)调用正确的命令即可
import time
import argparse
import pandas as pd
from nsetools import Nse

nse = Nse()
t = time.time()
FILE_LOCATION = ''  # csv file, blank because path not relevant to others
df = pd.read_csv(FILE_LOCATION)
Instrument,Qty,Avg buy price
APLAPOLLO,3,949.95
AVANTIFEED,6,554.55
BALAMINES,9,337.72
BALMLAWRIE,4,258.5
BANCOINDIA,15,217
DCMSHRIRAM,12,261.4
GHCL,12,267.2
GIPCL,27,101.95
JAMNAAUTO,15,182.1
JBCHEPHARM,15,344.85
KEI,24,143.95
KPRMILL,6,569.65
KRBL,9,312
MPHASIS,6,533.95
SHEMAROO,2,413.25
# using argparse to provide options for obtaining closePrice or buyPrice1
# of stocks
parser = argparse.ArgumentParser(description='Stock Quote fetcher')
parser.add_argument('-r', '--realtime', help='Obtain realtime stock\
                    quotes', action='store_true')
args = parser.parse_args()


def get_closing(stock):
    """Function to obtain closePrice or buyPrice1 of stocks"""
    if args.realtime:
        return nse.get_quote(stock)['buyPrice1']
    else:
        return nse.get_quote(stock)['closePrice']


# calculating current value of investment
current_value = sum(get_closing(row[0]) * row[1] for index, row in
                    df.iterrows())

print(current_value)
print("Completed in ", time.time() - t)