2017-03-07 11 views
3

최근에 만났습니다 http://dask.pydata.org/en/latest/ 단일 코어에서만 실행되는 팬더 코드가 있으므로 다른 CPU 코어를 사용하는 방법이 궁금합니다. 모든 (로컬) CPU 코어를 사용하는 것이 좋을까요? 그렇다면 팬더와 얼마나 호환됩니까?pandas에서 dask로 이동하여 모든 로컬 CPU 코어 활용

팬더가있는 여러 CPU를 사용할 수 있습니까? 지금까지 나는 GIL을 풀어 놓는 것에 대해 읽었지만, 모든 것은 다소 복잡해 보인다.

답변

3

모든 (로컬) CPU 코어를 제대로 사용할 수 있습니까?

예.

팬더와 얼마나 호환됩니까?

꽤 호환됩니다. 100 %가 아닙니다. Pandas와 NumPy를 혼합 할 수 있으며 필요에 따라 Dask를 사용하여 순수 Python 항목까지 혼합 할 수 있습니다.

팬더가있는 CPU를 여러 개 사용할 수 있습니까?

수 있습니다. 가장 쉬운 방법은 multiprocessing을 사용하고 데이터를 분리하여 보관하는 것입니다. 효율적으로 수행 할 수 있다면 각 작업을 디스크에서 독립적으로 읽고 디스크에 기록하십시오. 훨씬 더 어려운 방법은 mpi4py을 사용하는 것입니다.이 방법은 전문적인 관리자가있는 다중 컴퓨터 환경에서 가장 유용합니다.

+0

많은 CPU 코어를 가진 단일 (로컬) 작업자 만 참여한다면 어떤 옵션을 제안 하시겠습니까? –

+0

예를 들어 단일 열의 날짜 시간 구문 분석을 사용하면 dask가이를 병렬화 할 수 있습니까? –

+0

코드를 표시 할 수 있습니까? –

2

Dask는 데이터 프레임에 팬더 API의 large fraction을 구현합니다. 이러한 작업은 전체 데이터 프레임 청크에서 매우 동일한 팬더 함수를 호출하므로 완전히 호환 될 것으로 기대해야합니다.

결과 계산은 사용 가능한 schedulers 중 하나에서 실행할 수 있습니다. 오버 헤드가 낮은 스레드를 실행하는지 아니면 더 복잡한 것이더라도 실행하도록 선택할 수 있습니다. 분산 형 스케줄러는 스레드와 프로세스 간의 분할을 완벽하게 제어하고 더 많은 기능을 제공하며 나중에 클러스터 전체로 확장 할 수 있으므로 간단한 단일 시스템 작업의 경우에도 점점 더 선호되는 옵션이되고 있습니다.

많은 팬더 작업이 GIL을 릴리스하므로 스레드로 효율적으로 작동합니다. 또한 많은 팬더 작업을 병렬 청크로 쉽게 분해 할 수 있습니다. 그러나 일부 작업은 셔플이 필요한 조인과 같이 느려지거나 전혀 작동하지 않을 수도 있습니다 (예 : 다중 인덱싱). 알아내는 가장 좋은 방법은 시도해 보는 것입니다!

+0

그렇게 할 것입니다. 파싱 ​​날짜 시간 열의 속도 향상을 기대합니까? –

+1

CSV에서 읽는 것을 의미합니까? c-parser (기본값, 대부분의 상황에 대처할 수 있음)는 GIL을 해제하므로 스레드만으로도 구문 분석 속도를 향상시켜야합니다. 코어 수와 동일한 승수를 얻지는 못합니다. 특히 작은 데이터의 경우 오버 헤드가 항상 있습니다. – mdurant

+0

나는 그것을 조사 할 것이다. 평범한 팬더 버전의 속도를 높일 수있는 방법이 있습니까? –