파이썬은 한 번에 하나의 코어 만 사용하여 작동합니까?


13

나는 최근에 파이썬이 한 번에 하나의 코어 만 사용한다는 것을 알았습니다. 모든 리소스 (두 번째 코어)를 사용하는 특별한 빌드 나 명령이 있습니까?


1
반복 작업을 위해 배치 프로세스를 실행 중이고 스크립트가 올바른 작업을 수행하고 유용한 작업을 수행하기 위해 하나의 코어를 100 % 활용하는 경우 그렇게 위험하지 않을 수 있습니다. 다른 코어도 100 %로 실행하는 두 번째 프로세스를 시작하십시오. 하나의 스레드 프로세스보다 총 효과가 더 좋습니다. 처리해야 할 작업이 하나 뿐인 경우 상황이 다릅니다.
user30184

자세한 내용은이 스레드를 참조하십시오. 자세한 정보 및 솔루션 gis.stackexchange.com/questions/55048/…
iRfAn

일반적으로 파이썬에 관한 것인지 또는 더 구체적으로 ArcPy (태그에 의해 언급 된 것)에 관한 것인지 명확히하기 위해 질문을 편집 할 수 있습니까? 후자 인 경우, 이것이 사실임을 증명하기 위해 몇 가지 세부 사항을 포함시킬 수 있습니까? 어떻게 알았습니까?
PolyGeo

답변:


15

하위 프로세스를 사용하여 Python 스크립트 내에서 여러 코어를 활용하여 여러 작업을 병렬로 실행할 수 있습니다. 그러나 단일 작업을 여러 코어로 분할 할 수는 없습니다. 이 FAQ의 자세한 설명을 참조하십시오. ArcGIS 10은 멀티 코어 프로세서 및 / 또는 64 비트 운영 체제를 지원합니까?

숙련 된 Python 사용자 인 경우 Dev Summit 2014에서이 사용자 프리젠 테이션에 설명 된 접근 방식 ( Python Multiprocessing 및 Critical Path Methodology를 사용한 Parallel Geoprocessing)에 관심이있을 수 있지만 여전히 여러 코어를 사용할 수는 없습니다. 같은 작업.

그렇지 않으면 올해 말 멀티 스레딩의 성능을 테스트하기 위해 ArcGIS Pro (완전 64 비트 애플리케이션)가 출시 될 때까지 기다려야합니다.


4

일부 언급했듯이 ArcGIS Desktop에서는 멀티 프로세싱이 지원되지 않습니다. 데스크탑 환경에서 GIS 데이터 세트 처리에 관해 이야기 할 때, 큰 워크 플로를 여러 개의 코어를로드하는 동시에 계산되는 작은 청크로 분할 할 수 있는지 알아 내려고합니다. GP 도구 동작이 크게 다를 수 있으므로 거의 모든 경우를 개별적으로 조사해야합니다.

간단한 수학 문제를 해결할 때해야 할 일이 더 빠르다고 생각하십시오. 1에서 100까지의 모든 숫자를 계산하는 가장 빠른 방법은 무엇입니까?

1) 결과를 하나씩 합산하고 합계를 서로 점진적으로 추가하여 (1 + 2 = 3, 3 + 3 = 6, 6 + 4 = 10 등). 하나의 핵심이이 작업을 수행하고 있습니다.

2) 값을 미리 개별 청크로 나누고 그 값을 먼저 합산하십시오 (1-30, 31-60 및 60-100). 3 개의 코어가 동시에 작동합니다 (마지막 단계는 3 개의 값을 합산하는 것입니다).

다른 GP 도구는 big-O 표기법 이 다른 여러 알고리즘을 구현하기 때문에 다중 프로세스 제출 측면에서 다르게 접근해야합니다.

좋은 시작점 은 파이썬에서 멀티 프로세싱 라이브러리가 어떻게 작동 하는지 배우는 것 입니다. 나는 꽤 많이 사용합니다.

또한 64 비트 Python을 사용하여 명령 줄에서 Python 스크립트를 실행하면 일반적으로 실행 속도가 빠릅니다 (IDE의 실행과 비교하지만 컴퓨터에서는 그렇지 않을 수 있음). 백그라운드 지오 프로세싱은 10.1에 도입되었지만 64 비트 Python으로 Python 스크립트를 실행하여 성능에 미치는 영향을 확인하십시오.

다른 답변으로 명명 된 ArcGIS Pro는 베타 5 로 다운로드 할 수 있습니다 ( 버그를 제출하고 ArcGIS Online for Organizations 계정에 액세스 하려면 Esri 베타 커뮤니티 의 참여자 여야 함을 명심하십시오) Pro를 실행하십시오).


1

Pypy 는 CPython ( "표준"python)보다 4-5 배 빠르게 실행되는 호환 버전의 python입니다.

소스에서 빌드하기에 충분히 용감하다면 "같은 프로세스에서 여러 개의 독립적 인 CPU 굶주린 스레드를 병렬로 실행할 수있는" 지점 이 있습니다. 즉, 코드를 다시 작성할 필요없이 멀티 스레딩의 이점을 얻을 수 있습니다.


0

간단한 대답은 '아니요'입니다. 더 나은 대답은 그것이 달려 있다는 것입니다.

CPython (가장 일반적으로 사용되는 파이썬)의 구현으로 인해 파이썬이 실제로 멀티 스레딩을 이용할 수 없다고 가정하는 것이 안전합니다. 보다:

http://en.wikipedia.org/wiki/Global_Interpreter_Lock

https://wiki.python.org/moin/GlobalInterpreterLock

IO는 GIL에 영향을받지 않습니다.

이제 이것에 대해 작업 할 수 있습니다. 다른 사람들이 지적했듯이 하위 프로세스를 생성 할 수 있으며 다중 처리 라이브러리가 도움이 될 수 있습니다.


1
I / O는 영향을받지 않지만 대부분의 GP 도구 및 모든 것을 포함하여 C로 구현 된 대부분의 함수를 호출합니다. GIL은 생각보다 실제 GIS 환경에서 제한이 적습니다.
Jason Scheirer 2018 년

0

ArcGIS 문제를 해결할 수는 없지만 Python을 사용하여 여러 작업을 처리하는 한 Celery (celeryproject.org)와 같은 작업 관리자를 고려 했습니까? 이를 위해서는 다른 처리 작업을 식별하고 배포를 위해 "관리자"에게 제출하고, 관리자로부터 작업을 수신하고 처리하고 결과를보고하는 "작업자"를 실행해야합니다.

이것은 구현하기 쉽지는 않지만 놀라운 유연성을 제공하며 처리 능력을 최대한 활용할 수 있습니다 (즉, 유휴 코어 사용).

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