Я не могу заставить работать concurrent.futures, без фрейма данных и обновления символов в Jupyter Notebook - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь очистить данные о запасах с веб-сервера. Первоначально я использовал многопроцессорность, однако, поскольку я использую ноутбук 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

У меня есть следующие проблемы:

  1. изменение символов не обновляется

  2. кадр данных пуст, почему не добавляются данные. Как я могу это исправить?

...