파이썬에서 독립 프로세스를 만들려고합니다. 이 프로세스는 여러 인스턴스를 갖고 싶지만 다른 인수로 인스턴스화하려는 파이썬 스크립트입니다. 는 단순히 A로부터 루프, 내가 subprocess.Popen()를 호출하고 있지만 인수에 따라 변화 :동일한 이름의 여러 파이썬 프로세스/데몬을 생성합니다 (다른 args)
subscriber.py에서for d in mylist:
subprocess.Popen(['./subscriber.py', d.arg1, a.arg2, d.arg3])
, 나는 코드가 그 "daemonizes"또한 다양한 recipes 에 따라 과정 이를 위해 다음과 같이 내 subscriber.py를 시작하려고 시도했습니다.
for d in mylist:
p = multiprocessing.Process(target=subscriber.start,
args=(d.arg1, d.arg2, d.arg3))
p.daemon=True
p.start()
또한 내 스크립트는 공용 로그 파일에 쓰기 위해 파이썬 로깅을 사용합니다.
두 방법 중 어떤 것이 발생하는지는 루프의 마지막 반복 과정이 실제로 실행되고 있다는 것입니다. 내가 필요한 것은 이러한 백그라운드 데몬이 "영원히"실행되도록하는 것이지만, 단 1 개의 인스턴스 만 얻을 수 있습니다! [편집] 중요하게, 나는 호출하는 스레드를 종료시키고 실행중인 데몬을 남겨두고 싶다.
나는 stackoverflow와 다른 곳에서 굉장히 많이 봤지만 비슷한 예제를 찾을 수 없다. 아마 내 파이썬 초보자 - 네스 .. 내 접근 방식이 완전히 잘못 되었나요?
환경 : - 파이썬 2.7, 우분투 (위에서 언급 한 목록에 프로세스를 추가 외에)
변수를 재 할당하는 대신 프로세스 목록을 만들려고 했습니까? 예. – Serdalis
좋아요,하지만 호출하는 스레드가 종료되어 많은 데몬을 남겨두고 싶습니다. (p.append (target = subscriber.start, args = (d.arg1, d.arg2, d.arg3))) 뒤에. 이것이 다중 처리가 하위 프로세스 실행을 허용하지 않는 것처럼 Popen()을 향한 이유입니다. – lusito75