2015-08-29 19 views
6

Null dağılımı olarak 10.000 permütasyon kullanan bir istatistiksel test yapıyorum.Python'daki Sözlüklerin Büyük Listesinin üstesinden gelmenin en iyi yolu

Her bir permütasyon 10.000 anahtar sözlüktir. Her anahtar bir gendir, her bir değer, gene karşılık gelen bir hasta kümesidir. Bu sözlük programlı olarak üretilir ve bir dosyaya yazılabilir ve okunabilir.

İstatistiksel testlerimi gerçekleştirmek için bu permütasyonlar üzerinde yinelemek istiyorum; Ancak, bu büyük listeyi yığında tutmak, performansımı yavaşlatıyor.

Bu sözlükleri depolanmış bellekte tutmanın ve bunların üzerinden geçerken izinleri vermenin bir yolu var mı?

Teşekkür ederiz!

+0

Bu permütasyonlar nereden geliyor? Veri kümesi dosyasından mı geliyorlar yoksa programla oluşturuluyorlar mı? –

+0

@JuanLopes Programsal olarak oluşturulurlar, ancak bir dosyaya yazılabilir veya okunabilirler. –

+0

Oluşturduğunuzda nasıl depolanır ve erişilir? Bu bağlantı için – SuperBiasedMan

cevap

1

Bu genel bir hesaplama sorundur; bellekte saklanan verilerin hızını istiyorsunuz ancak yeterli belleğe sahip değilsiniz. En azından bu seçenekleri vardır:

  • Satın fazla RAM (besbelli)
  • süreç takas edelim. Bu, veri kümesi üzerinde yineleme olduğundan diskte saklamak için ve hangi seferde

belleğe herşeyi yüklemeyin bellekte

  • saklamak için hangi verilerin karar vermek OS bırakır, bir çözüm olabilir tembel verilerini yüklemek için:

    def get_data(filename): 
        with open(filename) as f: 
         while True: 
          line = f.readline() 
          if line: 
           yield line 
          break 
    
    for item in get_data('my_genes.dat'): 
        gather_statistics(deserialize(item)) 
    

    bir varyantı birden fazla dosya halinde veri bölme ya bir seferde veri n öğeleri toplu işlem yapabilirsiniz böylece bir veritabanında veri saklamaktır.

  • İlgili konular