2015-07-10 6 views
17

za to pytanie i odpowiedź - Python multiprocessing.cpu_count() returns '1' on 4-core Nvidia Jetson TK1 - wyjście multiprocessing.cpu_count() funkcji Pythona na niektórych systemach odzwierciedla liczbę procesorów aktywnie użytkowej, w przeciwieństwie do liczby procesorów faktycznie użyteczny przez wywołujący program Python.Portable sposobem wykrywania liczby procesorów * * Użyteczna w Pythonie

Powszechnym idiomem Pythona jest użycie wartości zwracanej cpu_count() w celu zainicjowania liczby procesów w Pool. Jednak w systemach wykorzystujących strategię "dynamicznej aktywacji procesora", idiom ten łamie się raczej źle (przynajmniej w stosunkowo spokojnym systemie).

Czy jest jakiś prosty (i przenośne) sposób, aby uzyskać na liczbę użytkowych procesorów (w przeciwieństwie numer aktualnie w użyciu) od Pythona?

Uwagi:

  1. to pytanie nie ma odpowiedzi od przyjętego odpowiedzi How to find out the number of CPUs using python, ponieważ, jak wspomniano w pytaniu połączonego na szczycie tym pytanie, drukowanie zawartości /proc/self/status pokazuje wszystkie 4 rdzenie jako dostępne dla programu.

  2. Moim zdaniem „przenośny” wyklucza jakąkolwiek podejście, które obejmuje analizowanie zawartości /proc/self/status, którego format może się różnić między wersjami systemu Linux, a które doesn `nawet istnieje na OS X. (To samo dotyczy każdy inny pseudo-plik również.)

Odpowiedz

6

Nie sądzę, że otrzymasz naprawdę przenośne odpowiedzi, więc podam poprawny.

Prawidłowe * odpowiedź dla Linuksa jest len(os.sched_getaffinity(pid)), gdzie pid może być 0 dla bieżącego procesu. Ta funkcja jest ujawniona w Pythonie 3.3 i późniejszych; jeśli potrzebujesz go wcześniej, będziesz musiał wymyślić kodowanie cffi.

Edycja: możesz spróbować sprawdzić, czy możesz użyć funkcji int omp_get_num_procs();, jeśli istnieje, jest to jedyna sensowna odpowiedź, jaką znalazłem na this question, ale nie próbowałem jej z Pythona.

+0

Dang, ssie dla mnie, używam Pythona 2.7. :-) Picie na teraz (dostałeś prawdziwe rezultaty, wiesz?), Ale w końcu mogę zagłębić się w 'cffi' i to daje mi dobry przykład do wypróbowania. – Hephaestus

Powiązane problemy