PyCharm Memory error hatası

erroshakan

Hectopat
Katılım
1 Mayıs 2020
Mesajlar
158
Çözümler
3
1595858493267.png


Merhaba arkadaşlar bugüne kadar 2.5 milyon satırlık yaklaşık 80 MB TXT veri dosyasını PyCharm Python ile işliyordum. Bugün 300 MB'lık bir veri dosyasını işlemem gerekti ama şu alttaki hatayı alıyorum. Yabancı forumlarda araştırdım bellek yetersiz vs. yazıyor, birkaç ayar yazmışlar uyguladım çalışmadı gene. 16 GB RAM var PC'de. Ne yapmam gerek? Şimdilik veriyi 2'ye bölüp yapacağım ama bu da çok zahmetli oluyor. Çözümü bilen varsa teşekkür ederim.
 
Python, weak typed olduğu için veri tiplerine özel boyutlandırma yapmıyor. Siz tek karakter bile saklasanız bellekte 50 byte(400 bit!) yer tutuyor.
Eğer büyük veri ile uğraşacaksanız R dili, F# gibi biraz daha bu iş için özelleştirilmiş dillere yönelin.
1595858916219.png
 
Python, weak typed olduğu için veri tiplerine özel boyutlandırma yapmıyor. Siz tek karakter bile saklasanız bellekte 50 byte(400 bit!) yer tutuyor.
Eğer büyük veri ile uğraşacaksanız R dili, F# gibi biraz daha bu iş için özelleştirilmiş dillere yönelin.
Eki Görüntüle 625347

Vay be!
 
Son düzenleme:
Python 3.8.3 ile harf başına 26 Byte alıyorum.
32 bit Python kullanıyor olabilir misiniz?
64 bit üzerinde;
49 boş String. her bir char başına 8 bit ekleniyor.

1596843249725.png

1596843306522.png


Sadece bellek yönetimi olarak değil performans olarak da Python yerlerde.
C üzerinde 150ms süren bir işlem (Pi sayını 8 basamak hassasiyet ile hesaplamak), Python üzerinde neredeyse 11 saniye sürüyor. İstek üzerine kaynak kodları da paylaşabilirim.
Yavaş diye dalga geçilen Java 500ms bu arada.
 
Son düzenleme:
Sadece bellek yönetimi olarak değil performans olarak da Python yerlerde.
C üzerinde 150ms süren bir işlem (Pi sayını 8 basamak hassasiyet ile hesaplamak), Python üzerinde neredeyse 11 saniye sürüyor. İstek üzerine kaynak kodları da paylaşabilirim.
Yavaş diye dalga geçilen Java 500ms bu arada.
Python'un ne kadar yavaş olduğunu test ettiğimde ben de şok olmuştum. C++'ta 99999'a kadar olan asal sayıları yazdıran bir program yazdım. Aynı algoritmayı Python koduna döktüm. C++ 2 saniyede işi tamamlarken Python 1 dakika 6 saniyede bitirebildi.

Python:
Python:
for num in range(2, 99999 + 1):
    for i in range(2, num):
        if (num % i) == 0:
            break
    else:
        print(num)

C++:
C++:
#include <iostream>

using namespace std;

int main()
{
    for (int i = 2; i < 99999; i++)
    {
        bool isPrime = true;
        for (int j = 2; j < i; j++)
        {
            if (i%j == 0)
            {
                isPrime = false;
                break;
            }
        }

        if (isPrime == true)
        {
            cout << i << endl;
        }
    }
}
 
Son düzenleme:
32 bit Python kullanıyor olabilir misiniz?
Evet, 64 bit kurayım hemen ben de. Unutmuşum, kuracaktım.
Python'un ne kadar yavaş olduğunu test ettiğimde ben de şok olmuştum. C++'ta 99999'a kadar olan asal sayıları yazdıran bir program yazdım. Aynı algoritmayı Python koduna döktüm. C++ 2 saniyede işi tamamlarken Python 1 dakika 6 saniyede bitirebildi.

Python:
Python:
for num in range(2, 99999 + 1):
    for i in range(2, num):
        if (num % i) == 0:
            break
    else:
        print(num)

Kodu çalıştırdım, teker teker yazıyor. Çok sinir bozucu, bir an önce C++ öğrenmem gerek benim.
Evet, 64 bit kurayım hemen ben de. Unutmuşum, kuracaktım.
64 bit installer bulamamam normal mi?
 
Son düzenleme:

Yeni konular

Geri
Yukarı