시스템 자원 사용법을 모니터하고 풀의 작업자 수를 동적으로 늘리거나 줄입니다.파이썬 다중 처리에서 동적 작업자 풀 관리
즉, 48GB RAM을 갖춘 24 코어 노드를 가지고 있으며, 필자가 필터링해야하는 4GB 데이터 파일로 읽습니다. 이 시스템은 다른 사람들이 사용하기도하므로 사용 가능한 메모리는 시간에 따라 다릅니다. 4GB 입력 데이터가 모든 작업자에게 복제되므로 작업자가 읽기 전용으로 만 필요하기 때문에 작업자를 피하는 방법을 아직 찾지 못했습니다. 권장 사항은 dicts() 및 list()의 dict()입니다.) 나는 곧바로 추방 될 것이므로 24 명의 노동자를 산란시킬 수 없다는 것을 의미합니다. 그래서 제가하고 싶은 일은 6 명의 근로자를 안전한 수로 말한 다음 프로세스를 시작한 다음 메모리 사용을 관찰하고 풀에 추가 작업자를 생성하고 메모리 사용량이 많으면 근로자 수를 줄이는 것입니다. , 그러나 더 이상 그 일꾼들에게 새로운 일을 알려주지는 않음). 이렇게하면 RAM 사용을 유지하면서 노드를 최대한 활용할 수 있습니다. < 95 %.
이 코드가 효과적인 이유는 6-12 명의 병렬 근로자도 몇 시간 동안 전체 코드가 실행되기 때문에 어느 정도 시간 동안조차도 20-30 %의 직원을 늘리면 전체 실행 시간.
지금 당장 Pool.map() 및 Pool.apply_async() 메서드를 사용하여 풀에 작업을 보내 었으므로 한 방법이 다른 방법보다 효과적 일 때 직접 기본 설정이 없습니다.
미리 감사드립니다.
실제로 관리자를 사용하면 메모리 노출이 제한되어 더 많은 프로세스를 실행할 수 있으므로 일시적으로 문제가 완화되었지만 풀 작업자 수를 동적으로 관리하는 방법을 알고있는 것이 좋습니다. –