Многопроцессорная обработка Python с API

#python #api #multiprocessing #google-colaboratory #python-multiprocessing

#python #API #многопроцессорная обработка #google-совместная лаборатория #python-многопроцессорная обработка

Вопрос:

Я пытаюсь собрать данные, используя приведенный ниже код python в Google Colab

 tickers = ['TSLA', 'NVTA', 'SQ', 'ROKU', 'CRSP', 'PRLB', 'Z', 'TWOU', 'WORK', 'TDOC','TWST', 'ZS', 'ICE', 'SNPS', 'XLNX', 'IRDM', 'FB', 'SYRS', 'PACB', 'SE',
           'EDIT', 'MCRB', 'CGEN', 'PSTG', 'PD', 'IOVA', 'ILMN', 'NTLA', 'MTLS', 'SPOT','NSTG', 'TSM', 'SPLK', 'VCYT', 'CERS', 'TWLO', 'HUYA', 'DOCU', 'SSYS', 'PINS']

df = pd.DataFrame({})
for i in range(len(tickers)) : 
  t = tickers[i]
  df1 = pd.read_excel('https://stockrow.com/api/companies/' t '/financials.xlsx?dimension=Qamp;section=Metricsamp;sort=desc')
  df = df.append(df1)
  

Чтобы сэкономить время, я попытался использовать многопроцессорную обработку.

 def processInput(i):
  t =tickers[i]
  return pd.read_excel('https://stockrow.com/api/companies/' t '/financials.xlsx?dimension=Qamp;section=Metricsamp;sort=desc')
inputs = range(len(tickers))
pool = mp.Pool(processes=2)
results = pool.map(processInput, inputs)
summary = pd.concat(results)
  

Это работает нормально, однако при переходе на processes= 4 я получаю сообщение об ошибке.
Я не думаю, что это предел процессора, поскольку я использую Google Colab, и код довольно прост. У меня такое ощущение, что API не допускает одновременного множественного доступа.
Не могли бы вы посоветовать мне и решить проблему? Это было бы очень ценно.

Комментарии:

1. Я могу подтвердить, что я также получаю сообщение об ошибке на моем рабочем столе с процессором 6/12 (работает с = 2, сбой с = 4, как и у вас)

2. Кажется, что иногда веб-сайт stockrow просто возвращает файл Excel, который Pandas не знает, как анализировать. И по какой-то причине это происходит чаще с большим количеством процессов

3. Возможно, веб-сайт делает это специально, чтобы заблокировать один IP-адрес от слишком быстрой загрузки слишком большого количества данных. Я попытался выполнить это с 10 процессами, и следующие тикеры завершились с ошибкой: 1 сбой 3 сбой 4 сбой 5 сбой 6 сбой 8 сбой 13 сбой 16 сбой 29 сбой 37 сбой. Остальное удалось. Попытался запустить его снова и 1 не удалось 2 не удалось 3 не удалось 4 не удалось 8 не удалось 29 не удалось 31 не удалось

4. есть ли у нас многопроцессорная обработка в Colab !? Это было бы потрясающе