Командная строка: программа Python говорит "убито" - PullRequest
0 голосов
/ 29 октября 2018

Я извлекаю данные xml с 465 веб-страниц, анализирую и сохраняю их в файле ".csv" с использованием python dataframe. После запуска программы в течение 30 минут, программа сохраняет файлы «200.csv» и убивает себя. Выполнение командной строки говорит «Убит». Но когда я запускаю программу для первых 200 страниц и оставшихся 265 страниц для извлечения отдельно, это работает хорошо. Я тщательно искал в Интернете, нет правильного ответа на этот вопрос. Не могли бы вы сказать мне, в чем может быть причина?

for i in list:
    addr = str(url + i + '?&$format=json')
    response = requests.get(addr, auth=(self.user_, self.pass_))
    # print (response.content)
    json_data = response.json()
    if ('d' in json_data):
        df = json_normalize(json_data['d']['results'])
        paginate = 'true'
        while paginate == 'true':
            if '__next' in json_data['d']:
                addr_next = json_data['d']['__next']
                response = requests.get(addr_next, auth=(self.user_, self.pass_))
                json_data = response.json()
                df = df.append(json_normalize(json_data['d']['results']))
            else:
                paginate = 'false'
                try:
                    if(not df.empty):
                        storage = '/usr/share/airflow/documents/output/' + i + '_output.csv'
                        df.to_csv(storage, sep=',', encoding='utf-8-sig')
                    else:
                        pass
                except:
                        pass

Заранее спасибо!

1 Ответ

0 голосов
/ 29 октября 2018

Похоже, вам не хватает памяти.

Можете ли вы попытаться увеличить разрешенную память (быстрое решение)
Или оптимизируйте свой код для меньшего потребления памяти (лучшее решение)

Если скорость не соответствует требуемой, вы можете попытаться сохранить данные во временные файлы и прочитать их при необходимости, но я предполагаю, что цикл for можно оптимизировать для меньшего потребления памяти без использования файловой системы.
Ведь память - это место, где должна жить петля.

Попробуйте запустить свой код без try catch block

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...