命令行:Python 程序说“Killed”

Raj*_*Raj 5 python xml linux dataframe pandas

我正在从 465 个网页中提取 xml 数据,并使用 python 数据框将其解析并存储在“.csv”文件中。程序运行 30 分钟后,程序保存“200.csv”文件并自行杀死。命令行执行显示“Killed”。但是当我分别运行前 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
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Ste*_*sic 4

看起来你的内存不足了。

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

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

尝试无阻塞地运行您的代码try catch