12 % CPU 전력 만 사용하는 Python 인터프리터


26

텍스트 분석을 위해 우분투에서 파이썬을 사용하고 있습니다. 많은 양의 작업에도 불구하고 프로그램은 시스템 모니터에 표시된 것처럼 CPU 사용량을 12 %로 유지합니다.

나는에서 프로그램의 우선 순위를 변경 Normal하는 Very High하지만 아무런 영향을 미치지 않습니다.

내 파이썬 프로그램이 얻을 수있는 CPU 사용량을 제한하는 것은 무엇이며 어떻게 변경할 수 있습니까? 그래서 프로그램은 더 많은 CPU 전력을 활용할 수 있습니까?

답변:


73

가상 코어가 8 개인 CPU (하이 스레딩이있는 쿼드 코어)가 있다고 가정합니다. 이는 완전히로드 된 하나의 CPU 스레드 / 가상 코어가 총로드의 12.5 %임을 의미합니다.

Python 인터프리터는 기본적으로 하나의 단일 프로세스로만 실행되는 애플리케이션이므로 둘 이상의 가상 코어를 활용할 수 없습니다. 이 코드로 실행하는 코드가 멀티 스레딩을 사용하더라도 GIL (전역 인터프리터 잠금) 때문에 여전히 하나의 CPU 스레드 / 가상 코어 만 사용 합니다.

Python 프로그램이 멀티 프로세싱을 사용 하는 경우 (실제로 여러 개의 Python 인터프리터 인스턴스를 시작하고 작업을 병렬로 수행 할 수있는 경우) 여러 가상 코어 / CPU 스레드를 활용할 수 있습니다. (@SargeBorsch가 그의 의견에서 지적했듯이, 다중 처리없이 이것을 달성하는 몇 가지 고급 방법이 있지만 일반적으로 빠르게 작성하는 것은 아닙니다.)


그것은 실제로 많은 의미가 있습니다. 예, 4 개의 코어 (8 개의 가상 코어)가있는 쿼드 코어가 있습니다. Ty
Matthias Herrmann

9
@MatthiasHerrmann 각 CPU가 몇 퍼센트에서 작동하는지 보여주는 시스템 모니터를 고려할 수 있습니다. 그렇게하면 8 개 중 1 개의 CPU 만 100 %임을 알 수있었습니다. 주제에 대한 AU의 스레드는 다음과 같습니다 .
WinEunuuchs2Unix

7
사실이 아닙니다. 단일 파이썬 프로세스의 모든 코어를 잘 사용할 수 있습니다. C 코드를 호출하고 GIL을 해제하면됩니다. 그리고 많은 기존 라이브러리가 정확히 그렇게합니다 (예 : 숫자가 많음).
Sarge Borsch

2
또는 사용 Jython또는 IronPythonGIL을 가지고 있지 않는.
모니카 해밍 중지

19

이 경우에 가능성이 적은 또 다른 가능성은 프로그램이 디스크에 바인드되어있는 것입니다. 즉, 디스크에서 느리게 읽고 쓰는 중이며 CPU가 디스크를 기다리고있는 것입니다.


5
시도 iotopiowait가 결합 모니터 프로그램
고양이

1
또는 코드 자체가 동 기적이며 차단 적입니다.
Zydnar

그건 내 실수 고마워요
Fipsi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.