Я пытаюсь очистить данные о запасах с веб-сервера. Первоначально я использовал многопроцессорность, однако, поскольку я использую ноутбук Jupyter, мне посоветовали использовать concurrent.futures. Я обновил свой код, но теперь у меня есть ряд проблем, и я не знаю, с чего начать или как это легко исправить.
import datetime
import time
import worker
import concurrent.futures
import pandas as pd
results = []
numdays = 10
start_date = datetime.datetime(2019, 1, 15 ) #year - month - day
datelist = [
(start_date - datetime.timedelta(days=x)).strftime('%Y%m%d') for x in
range(0, numdays)
]
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
future_to_url = {executor.submit(worker.load, date): date for date in datelist}
for future in concurrent.futures.as_completed(future_to_url):
date = future_to_url[future]
try:
data = future.result()
results.append(data)
except Exception as exc:
print('%r generated an exception: %s' % (date, exc))
else:
continue
df = pd.DataFrame(results)
и мой рабочий модуль, который содержит функцию загрузки, выглядит следующим образом:
import pandas as pd
import datetime
import urllib
import requests
from pprint import pprint
import time
from io import StringIO
symbols = ['AAON', 'ACB', 'ACHC']
start = time.time()
dflist = []
def load(date):
if date is None:
return
url = "http://regsho.finra.org/FNYXshvol{}.txt".format(date)
try:
df = pd.read_csv(url,delimiter='|')
if any(df['Symbol'].isin(symbols)):
stocks = df[df['Symbol'].isin(symbols)]
print(stocks.to_string(index=False, header=False))
# Save stocks to mysql
else:
print(f'No stock found for {date}' )
except urllib.error.HTTPError:
pass
У меня есть следующие проблемы:
изменение символов не обновляется
кадр данных пуст, почему не добавляются данные. Как я могу это исправить?