[PYTHON] 멀티 코어를 사용하지 않는 IPython.parallel?
PYTHON멀티 코어를 사용하지 않는 IPython.parallel?
나는 IPython.parallel을 실험하고 있으며 다른 엔진에서 여러 쉘 명령을 실행하려고합니다.
나는 다음 노트를 가지고있다 :
셀 0 :
from IPython.parallel import Client
client = Client()
print len(client)
5
명령을 실행하십시오.
셀 1 :
%%px --targets 0 --noblock
!python server.py
셀 2 :
%%px --targets 1 --noblock
!python mincemeat.py 127.0.0.1
셀 3 :
%%px --targets 2 --noblock
!python mincemeat.py 127.0.0.1
그것이하는 일은 MapReduce의 미식가 구현을 사용한다는 것입니다. 내가 처음 시작할 때! python mincemeat.py 127.0.0.1은 코어 하나를 대략 100 % 사용하고, 두 번째 코어를 실행하면 각각 50 %로 떨어집니다. 컴퓨터에 4 개의 코어 (+ 가상 코어)가 있으며 터미널에서 직접 시작할 때 사용할 수 있지만 노트북에서는 사용할 수 없습니다.
제가 누락 된 것이 있습니까? 파이썬 mincemeat.py 127.0.0.1 명령에 대해 하나의 코어를 사용하고 싶습니다.
편집하다: 명확성을 위해 여러 코어를 사용하지 않는 또 다른 사항은 다음과 같습니다.
셀 1 :
%%px --targets 0 --noblock
a = 0
for i in xrange(100000):
for j in xrange(10000):
a += 1
셀 2 :
%%px --targets 0 --noblock
a = 0
for i in xrange(100000):
for j in xrange(10000):
a += 1
나는 뭔가를 놓친다 고 생각합니다. 나는이 두 세포가 가능한 한 다른 코어를 사용해야한다고 생각한다. 그러나 그것은 그럴 듯하지 않습니다. 다시 CPU 사용량은 동일한 코어를 공유하고 50 %를 사용함을 보여줍니다. 나는 무엇을 잘못 했는가?
해결법
-
==============================
1.채팅 토론 요약 :
채팅 토론 요약 :
CPU 친 화성은 프로세스를 특정 CPU 코어에 고정시키는 메커니즘으로, 여기서 문제는 numpy를 가져올 때 파이썬 프로세스를 CPU 0에 고정시킬 수 있다는 것입니다. 특정 BLAS 라이브러리에 연결 한 결과입니다. 이 셀을 실행하여 모든 엔진의 고정을 해제 할 수 있습니다.
%%px import os import psutil from multiprocessing import cpu_count p = psutil.Process(os.getpid()) p.set_cpu_affinity(range(cpu_count())) print p.get_cpu_affinity()
multiprocessing.cpu_count를 사용하여 CPU 수를 얻은 다음 모든 엔진을 모든 CPU와 연결합니다.
이 문제를 탐구하는 IPython 노트북.
from https://stackoverflow.com/questions/16323743/ipython-parallel-not-using-multicore by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 비동기 백그라운드 프로세스? (0) | 2018.11.26 |
---|---|
[PYTHON] 팬더 : 여기서 메모리 누수가 어디 있지? (0) | 2018.11.26 |
[PYTHON] 파이썬에서 subprocess.call을 사용할 때 stdout을 파일로 리디렉션하는 방법은 무엇입니까? (0) | 2018.11.25 |
[PYTHON] 파이썬 GUI 빌더 [닫기] (0) | 2018.11.25 |
[PYTHON] django-allauth에서 템플릿을 재정의하는 방법은 무엇입니까? (0) | 2018.11.25 |