Tengo una secuencia de comandos de Python que importa un archivo CSV grande y luego cuenta el número de ocurrencias de cada palabra en el archivo, luego exporta los recuentos a otro archivo CSV.
Pero lo que está pasando es que una vez que se termina esa parte de conteo y comienza la exportación dice Killed
en el terminal.
No creo que esto sea un problema de memoria (si lo fuera, supongo que obtendría un error de memoria y no Killed
).
¿Será que el proceso está tardando demasiado? Si es así, ¿hay alguna manera de extender el período de tiempo de espera para evitar esto?
Aquí está el código:
csv.field_size_limit(sys.maxsize)
counter={}
with open("/home/alex/Documents/version2/cooccur_list.csv",'rb') as file_name:
reader=csv.reader(file_name)
for row in reader:
if len(row)>1:
pair=row[0]+' '+row[1]
if pair in counter:
counter[pair]+=1
else:
counter[pair]=1
print 'finished counting'
writer = csv.writer(open('/home/alex/Documents/version2/dict.csv', 'wb'))
for key, value in counter.items():
writer.writerow([key, value])
Y Killed
sucede después de que se finished counting
haya impreso, y el mensaje completo es:
killed (program exited with code: 137)
killed
proviene el mensaje, pero si se debe a que se sobrepasa algún tipo de límite de memoria del sistema, es posible que pueda solucionarlo usando encounter.iteritems()
lugar decounter.items()
en su ciclo final. En Python 2,items
devuelve una lista de claves y valores en el diccionario, que puede requerir mucha memoria si es muy grande. Por el contrario,iteritems
es un generador que solo requiere una pequeña cantidad de memoria en un momento dado.