2015-07-10 20 views
17
bu soru-cevap Başına

-Python multiprocessing.cpu_count() returns '1' on 4-core Nvidia Jetson TK1 - numarası yerine belirli sistemlerde Python'un multiprocessing.cpu_count() fonksiyonunun çıktısı, kullanım yılında CPU aktif sayısını yansıtır CPU'lar aslında çağrı Python programı tarafından kullanılabilir kullanılabilir.Taşınabilir yolu

Yaygın bir Python deyimi,'daki işlem sayısını başlatmak için cpu_count() döndürme değerini kullanmaktır. Ancak, böyle bir "dinamik CPU aktivasyonu" stratejisini kullanan sistemlerde, bu deyim oldukça kötü bir şekilde kırılır (en azından nispeten sakin bir sistemde).

kullanılabilir işlemci sayısına ulaşmak için bazı basit (ve portatif) yolu var mı Python (kullanım şu anda sayı aksine)?

Notlar: olarak bu soruya üstündeki bağlantılı Söz konusu not beri bu soru, How to find out the number of CPUs using python kabul cevap yanıt alamazsanız

  1. , /proc/self/status içeriğini baskı tüm gösterir Programa uygun 4 çekirdek.

  2. Aklımda, "taşınabilir" biçimi, sürümün sürümünün Linux sürümüne değişebileceği ve OS X'de bulunmayan bile olsa, /proc/self/status içeriğinin ayrıştırılmasını içeren tüm yaklaşımları kapsam dışı bırakıyor. herhangi bir başka sözde dosya da.)

cevap

6

Gerçekten portatif cevaplar alacağınızı düşünmüyorum, bu yüzden doğru olanı vereceğim.

Linux için doğru * cevap pid mevcut süreci 0 olabilir len(os.sched_getaffinity(pid)) vardır. Bu işlev Python 3.3 ve sonrasında ortaya çıkar; Daha önce ihtiyacınız varsa, bazı süslü cffi kodlamasını yapmanız gerekir.

Düzenleme: Varsa, int omp_get_num_procs(); işlevini kullanıp kullanamayacağınızı görmeyi deneyebilirsiniz, this question üzerinde bulduğum tek anlamlı yanıt budur ancak Python'dan denemedim.

+0

Dang, benim için python 2.7 kullanıyorum. :-) Şimdilik punting (gerçek çıktılar var, biliyor musun?), Ama sonunda 'cffi' ye girebilirim ve bu bana denemek için iyi bir vaka verir. – Hephaestus

İlgili konular