2017-01-31 1 views
0

이것은 바보 같은 질문 일 수 있지만, 파이썬 다중 처리 모듈을 사용하여 생성 된 서브 프로세스와 연관된 프로세스 이름을 편집 할 수있는 방법이 있습니까?서브 프로세스 이름 지정

이 용도로 사용하려면 명령 행 유틸리티 top 또는 ps을 사용하여 실행중인 서브 프로세스와 중단 된 서브 프로세스를 확인할 수 있어야합니다. 예 : 나는 다음 프로세스를 참조하는 것이 바람직 할 것이다 톱을 사용하여, n은 서브 프로세스를 시작 MyScript.py라는 스크립트가 있다고 가정 :

MyScript.py 
MyScript.py <tag1> 
Myscript.py <tag2> 
... 
Myscript.py <tagn> 

아니라 단지

MyScript.py 
MyScript.py 
MyScript.py 
... 
MyScript.py 

답변

0

번호 파이썬보다 더 통제권이 없습니다 "top"명령의 출력에 나타나는 프로세스 이름. 그것은 운영 체제에 의해 관리됩니다.

multiprocessing.Process 클래스를 사용하는 경우 프로세스 ID는 객체의 PID 속성에서 사용할 수 있으므로 인쇄하여 top의 출력과 상호 참조 할 수 있습니다. 또는 프로그램을 subprocess 모듈로 호출하고 출력을 필터링하여 관련 출력 만 제공 할 수도 있습니다.

+0

클라이언트 요청에 따라보고하는 것뿐만 아니라 스레드의 주 추적을 유지할 수도 있지만, 일단 쉬운 방법을 기대하고있었습니다. 음, 어쨌든 고마워. – cpaitor

0

(이것은 조금 해키 보인다하지만) 당신이 무엇을 할 수 있는지 다음과 같이 subprocess를 통해 프로세스를 시작하는 것입니다 :

다음
import subprocess 
subprocess.call(["python", "myscript.py", "-tag", "tag1"]) 

오른쪽 함수로 분기하기 위해 __main__을 적용해야 -tag 인수를 볼 때 리눅스에서는 서브 프로세스가 fork()이고 파이썬 파일은 새로 해석하지 않지만, 멀티 프로세싱이 작동하는 방식은 Windows에서 과도하게 보일 수 있습니다.

+0

나는 이것에 대해 생각해 보았지만 문제는 그 때 서브 프로세스와 메인 프로세스 사이에 메모리를 전달할 것이기 때문에이 경우에는 실제로 옵션이 아니다. – cpaitor