Python'da, bir işlemin hangi CPU üzerinde çalıştığını öğrenmenin bir yolu var mı? Örneğin, farklı işlemler için farklı işlemler oluşturursam, çoklu işlem modülünü kullanarak, her işlemin çalıştığı çekirdeği tanımlamak mümkün mü?Python çok işlemcili programlama
cevap
Bunun bir süreç bir çekirdek ile sınırlı olmadığı için güvenilir bir şekilde yapılabileceğini düşünmüyorum. Bir işlem bir veya daha fazla çekirdek üzerinde çalışabilir (iş parçacığı kullanırsa) ve yürütmek için kullanılan çekirdekler, iş yükünü dengelemeye çalıştıkça zaman içinde değişebilir.
İşlemle ilgili bilgi almanın iyi bir yolu olarak psutil kitaplığına bakın.
Kısa cevap
Hayır, bu mümkün değildir.
genel durumda Uzun cevap
yapamayacağınız işlemler belirli çekirdek bağlı olmayan beri. İşlemler, her zaman çalışacakları garantili sabit CPU'lara sahip değildir: belirli bir süreçte belirli bir işlemi çalıştırmak için hangi çekirdeğin kullanılacağına karar vermek işletim sistemine bağlıdır. Bu karar verme, scheduling olarak adlandırılır ve uygulanması OS'ye özeldir. Belirli işletim sistemlerinde, belirli işlemlerin çıkması için işlemcilerin nasıl kullanıldığını kontrol edebilecek durumda olabilirsiniz. Tercih edilen işlemcilerin atanması genellikle processor affinity olarak adlandırılır. Olumsuzluğun ayarlanması bile, verilen çekirdekler üzerinde her zaman bir işlemin yürütüleceğini garanti etmez: en sonunda programlamanın nasıl yürütüldüğüne karar vermek için OS'ye (ve CPU'ya) bağlıdır.
Bildiğim tüm işletim sistemlerinden, en yakın şey, Linux'un "çağıran parçanın çalıştığı CPU'yu belirlemek için" kullanılabilen sched_getcpu
olacaktır (bkz. man sched_getcpu
). Mevcut CPU'yu bu işlevle kontrol ettiğinizde bile, çekirdek çekirdeği hemen değiştirebilir. Gerekirse piton koduyla bunları bağlayabilir,
İşlem benzeşiminin ayarlanması ve sorgulanması için bir çapraz platform çözümü bulunup bulunmadığını bilmiyorum. Windows'da, [SetProcessAffinityMask] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms686223%28v=vs.85%29) numaralı telefonu arayarak belirli bir çekirdek kümesine işlem yakınlığını ayarlayabilirsiniz. aspx) biraz vektör ile. – eryksun
Ben de var sanmıyorum. PyPi'den, “afinite 0.1.0” (http://pypi.python.org/pypi/affinity), Windows'ta ve bazı belirli Linux çekirdeklerinde afinite işlevleri için sarmalayıcılar sağladığını belirttim.Yine de denemedim ve bu kütüphane bile, kendi başına, belirli bir CPus'a bağlı süreçlerin yanlış anlaşılmasına dayanan, verilen probleme tam bir çözüm sunmazdı. – jsalonen
İşlemlerin belirli CPU'lara bağlı olmama nedenlerinin belirli zaman aralıklarında hangi CPU'ların çalıştırıldığını görmemize izin vermediğini görmüyorum. İşlemi hangi CPU'nun çalıştırdığını kontrol edemiyorum, örneğin her 10 saniyede bir? –
Python şimdi böyle özelliğe sahip olmayabilir, ancak
C kütüphaneleri mevcuttur.
Referans: How could I know which core a process is running on?
- 1. python: çok işlemcili Olay
- 2. Çok İşlemcili ve Selenyum Python
- 3. Python çok çekirdekli programlama
- 4. Python çok işlemcili anahtar kelime bağımsız değişkenleri
- 5. Çok işlemcili Python geri arama.pools.map_async çalışmıyor?
- 6. Çok işlemcili yürütme yürütmesi
- 7. Neden operator.itemgetter'i çok işlemcili kullanamıyorum?
- 8. Çok işlemcili - üretici/tüketici dizaynı
- 9. Python: Çok işlemcili bekleyen bekleyen görevlerin sayısını nasıl kontrol edebilirim?
- 10. Python çok işlemcili modülüyle oluşturulan alt süreçler yazdırılamayacak
- 11. çok işlemcili maxtasksperchild ile eşittir PID'ler üretir
- 12. Pandalar veri karesine çok işlemcili yazma
- 13. Çok işlemcili farklı çalışanlarda aynı çıktı
- 14. Çok işlemcili "kaçak hatalar" ın önlenmesi
- 15. PyInstaller yerleşik Windows EXE, çok işlemcili
- 16. İçerik yöneticileri ve çok işlemcili havuzlar
- 17. Python'da çok basit eşzamanlı programlama
- 18. Yapay Ağları Python ile Programlama
- 19. Çok işlemcili modülde her işlem için bir Python modülünün yeniden yüklenmesi
- 20. Çok işlemcili dosyada dosya tanıtıcısını devralma önleme lib
- 21. Otomatik işlem süreci ve çok işlemcili çocuk işlemleri Havuz
- 22. Çok işlemcili modül kullanan basit bir oyuncak örneği bilgisayar çöküyor
- 23. Soket programlama kullanarak resim gönder Python
- 24. Soket Programlama Python Sırasında ve Sorun Var
- 25. Python programlama: büyük harfle bir giriş yazdırılıyor
- 26. Çok Uzun Python Bildirimi
- 27. re.search Çok satırlı Python
- 28. Görsel Python çok yavaş
- 29. Genel programlama: Log FFT VEYA yüksek hassasiyetli evrişim (python)
- 30. python 2.7 çok işlemli. pool.apply_async içinde başka bir pool.apply_async
Programlı veya OS aracılığıyla? OS ise, o zaman hangi işletim sistemi? – jzila
Programsal veya OS ile ne demek istiyorsun? Programın içinden veya dışından geliyorsanız, programın içinden istiyorum. Örneğin os.getpid() ile işlem kimliğini alabilirim, bu işlemin çalıştığı CPU'yu bulmak için benzer bir şey yapabilir miyim. –
Btw. Neden ilk başta CPU numarasını bulmak istersiniz? Neyi başarmaya çalışıyorsun? – jsalonen