命令行:Python程序显示“已杀死”

时间:2018-10-29 09:28:43

标签: python xml linux pandas dataframe

我正在从465个网页中提取xml数据,并使用python数据帧解析并将其存储在“ .csv”文件中。在运行该程序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 :(得分:2)

您似乎内存不足。

您能否尝试增加允许的内存(快速解决方案)
或优化代码以减少内存消耗(最佳解决方案)

如果速度不是必需的,则可以尝试将数据保存到临时文件中,并在需要时从中读取,但是我猜想可以优化for循环以减少内存消耗,而无需使用文件系统。
毕竟,内存是循环应该存在的地方。

  

尝试在没有 try catch 阻止的情况下运行代码