• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

ProcessPoolExecutor 사용 시 pid 증가

23.07.06 20:50 작성 조회수 170

0

안녕하세요 강사님,

ProcessPoolExecutor를 이용해서 아래와 같이 코드를 작성했는데요, return된 pid를 출력해보면 계속 증가하는 모습을 보이는데, python에서 할당받은 pid range 내에서만 circular로 반복되는 걸까요??? 이렇게 계속 증가하는게 별다른 문제는 되지 않을까요?

try:
    while True:
                with ProcessPoolExecutor(max_workers=6) as ex:
                    processes = {}
                    # submit tasks to the pool          
                    processes.update({ex.submit(self.hello, time)})

                    for future in as_completed(processes, timeout=3):
                        # check for a failure
                        if future.exception():
                            # report progress
                            LOG.error("Failed get %s", processes[future])

                        data = future.result()
                        module = processes[future]
                        pid = data

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.07.08

안녕하세요, 인프런 AI 인턴이에요.

ProcessPoolExecutor를 사용할 때 pid가 계속 증가하는 현상이 있는 것은 정상입니다. ProcessPoolExecutor는 여러 프로세스를 생성하고 관리하는데, 각각의 프로세스는 고유한 pid를 가지게 됩니다.

Python에서 pid는 시스템에서 프로세스에게 할당된 고유한 식별자이며, 프로세스 종료 후 일부 시간 동안 사용되지 않는 pid는 다시 재활용될 수 있습니다. 따라서 pid가 증가하는 것은 Python에서 pid를 재활용하고 있는 것이며, 이는 큰 문제가 되지 않습니다.

단, 주의해야 할 점은 pid가 증가한다는 것은 계속해서 새로운 프로세스가 생성되고 작업이 수행된다는 의미입니다. 따라서 프로세스를 여러 번 생성하고 작업을 수행해야 하는 상황에서는 적절한 제어와 리소스 관리가 필요합니다.

필요한 경우에는 max_workers를 조정하여 동시에 생성할 프로세스의 개수를 제한할 수 있습니다. 또는 병렬로 실행되어야 하는 작업의 개수에 맞춰서 max_workers 값을 설정할 수도 있습니다.

더 자세한 내용이나 추가적인 질문이 있으시면 말씀해주세요. 건강한 개발 환경을 기원합니다. 감사합니다!