Python ram kullanımı

Merhabalar arkadaşlar biyoinformatik veri analizi sürecinde kullandığım bi python scriptim var bu script csv formatında ki dosyayı xlsx formatına dönüştürerek başka bir xlsx ile örtüşen veriler ile birleştirme işlemini yapmaktadır. Ancak sistemimde 12GB DRR4 2333mhz ram (8+4) ve 32GB M2 slot SSD şeklinde swap alanı bulunmasına karşın aşırı derecede ram kullanıyor ve bir süre sonra

İşleme alınan dosyalar 

157003-goingxlsx.csv

1 dosya işleme alınıyor 

157003-goingxlsx.csv okunuyor 

./exome_hard_filter-v1.1: line 54: 17965 Killed                  python3 $MANIP

bu şekilde bi hata vererek adımı atlıyor ve işlemi yapmıyor. işleme aldığım dosyanın boyutu 380MB olmasına rağmen kaynakları sonuna kadar kullanıp hata veriyor. hatanın neden dolayı oluştuğunu çözemedim yardımcı olabilir misiniz?

script dosyası : https://paste.ubuntu.com/p/t7tHTD9RDY/

python scriptini bi shell script içerisinde çalıştırmaktayım.

.csv dosyasını tek seferde okumak yerine parça parça okuyun.

import pandas as pd
chunksize = 10 ** 8
for chunk in pd.read_csv(filename, chunksize=chunksize):
    process(chunk)

Kaynak

programı class ve fonksiyonlarla yazmayı dene
yanlış anlamadıysam rama yüklenme sebebi bir işlemi bitirmeden ikincisini üçüncüsünü hatta daha fazla veriyi tekrar tekrar aynı anda işlemesi. Bir de aynı veriyi işlememesi için bir kod yazman.
bu arada bu benim şahsi görüşüm programlamada yeniyim ciddiye almana gerek yok bi fikir verir diye yazdım :smile:

Acilan hic bir sey kapanmamis. Garbage collector’a guvenmek kotu bir fikir degil (Python’i kullanma sebeplerimizden biri), ama bunun gibi sorun cikan durumlarda kod kalitesini gozden gecirmek iyi bir fikir olabilir. Pandas’in context manager destegi varmis: https://dev.pandas.io/docs/user_guide/io.html#reading-excel-files . Onu kullanmak yardimci olabilir.

Bir de benim aklima takilan programin neden oldugu. “Asiri” memory kullanimi 12+32 GB’i mi asiyor? O zaman hata vermesi normal; Python bu hatayi alinca programi olduruyor olabilir.

Her halukarda daha detayli bir hata mesaji lazim (hangi sinyal tarafindan olduruldugu bile yazmiyor). Programin (Python’in) stderr ciktisina erisimimiz var mi? MANIP degiskeninin icerigi ne?