60GB SciPy Dizim (Matrix) var 5+ multiprocessing
Process
nesne arasında paylaşmam gerekiyor . Numpy-sharedmem gördüm ve bu tartışmayı SciPy listesinde okudum . İki yaklaşım var gibi görünüyor - numpy-sharedmem
ve a kullanmak multiprocessing.RawArray()
ve NumPy s’yi dtype
s’ye eşlemek ctype
. Şimdi, numpy-sharedmem
gidilecek yol gibi görünüyor, ancak henüz iyi bir referans örneği görmedim. Dizi (aslında bir matris) salt okunur olacağı için herhangi bir kilide ihtiyacım yok. Şimdi, boyutu nedeniyle bir kopyasından kaçınmak istiyorum. Bu gibi sesler doğru yöntem oluşturmaktır sadece a kadar dizinin kopyasharedmem
array, and then pass it to the Process
objects? A couple of specific questions:
Sharedmem tanıtıcılarını altlara aktarmanın en iyi yolu nedir
Process()
? Sadece bir diziyi dolaştırmak için kuyruğa ihtiyacım var mı? Bir boru daha mı iyi olur? BunuProcess()
alt sınıfın başlangıcına bir argüman olarak iletebilir miyim (burada turşu olduğunu varsayıyorum)?Yukarıda bağlantılandırdığım tartışmada
numpy-sharedmem
64bit güvenli olmadığından bahsediliyor mu? Kesinlikle 32 bit adreslenebilir olmayan bazı yapılar kullanıyorum.RawArray()
Yaklaşımda değiş tokuş var mı? Daha yavaş mı, böcek mi?Numpy-sharedmem yöntemi için herhangi bir ctype-dtype eşlemesine ihtiyacım var mı?
Bunu yapan bir Açık Kaynak kod örneği olan var mı? Ben çok pratik öğrenmiş biriyim ve bakılacak iyi bir örnek olmadan bunu çalıştırmak zor.
Bunu başkalarına açıklığa kavuşturmak için sağlayabileceğim ek bilgiler varsa, lütfen yorum yapın, ben de ekleyeceğim. Teşekkürler!
Bunun Ubuntu Linux ve Belki Mac OS üzerinde çalışması gerekiyor , ancak taşınabilirlik çok büyük bir sorun değil.
multiprocessing
her işlem için her şeyin bir kopyasını almayı bekleyin.