我正在从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
谢谢!
答案 0 :(得分:2)
您似乎内存不足。
您能否尝试增加允许的内存(快速解决方案)
或优化代码以减少内存消耗(最佳解决方案)
如果速度不是必需的,则可以尝试将数据保存到临时文件中,并在需要时从中读取,但是我猜想可以优化for循环以减少内存消耗,而无需使用文件系统。
毕竟,内存是循环应该存在的地方。
尝试在没有
try
catch
阻止的情况下运行代码