2013-04-17 3 views
7

concurrent.futures을 사용하여 실행중인 프로세스를 종료하려면 어떻게해야합니까? 알다시피, cancel() 메서드는 큐에서 프로세스가 실행 중이 아니면 제거합니다. 그러나 실행중인 프로세스를 죽이는 것은 어떨까요? 예를 들어, 오래 실행중인 프로세스가 있고 GUI에서 취소 버튼을 누르면 중지하려고합니다.concurrent.futures에서 실행중인 프로세스를 중지하는 방법이 있습니까?

답변

0

이 경우 장기 실행 작업에는 multiprocessing.Process을 사용하는 것이 좋습니다.

새 프로세스를 시작하기 전에 multiprocessing.Event을 작성한 후에을 시작하십시오. 어린이가이 과정을 정기적으로 Event에서 확인하도록하고 Event.is_set()True을 반환하면 종료하도록하십시오.

GUI 코드에서 Event에있는 set() 버튼 호출과 관련된 콜백을 보유하십시오.

0

내 대답은 관련 StackOverflow 질문 here을보고 싶을 수 있습니다.

요약하면 concurrent.futures.ProcessPoolExecutor 내부에서 실행중인 프로세스를 취소하는 간단한 방법이없는 것처럼 보입니다. 그러나 자식 프로세스를 수동으로 종료하여 hacky 방법으로이를 수행 할 수 있습니다.

관련 문제