나는 A와 B라는 두 가지 기능을 가진 Python 스크립트 (RHEL을 기반으로하는 유닉스 계열)를 가지고 있는데,이 스크립트는 A와 B라는 두 가지 기능을 가지고 있습니다. 서로 다른 독립적 인 프로세스 기능를 계속 기능 A에서 데이터를 전달는 의도적으로 파이썬에서 고아 프로세스 만들기
- 시작 스크립트로 myscripf
- 스폰에게 기능에게 새로운 프로세스를 실행합니다 (B를 분리 및 A)
- 함수 A가 완료되면 B가 여전히 실행 중일지라도 MyScript를 종료하십시오.
멀티 프로세스를 사용하여 데몬 프로세스를 작성해야한다고 생각했지만 documentation은 올바른 용도가 아니라고 제안합니다. 그래서, 나는 자식 프로세스와 자식^2 프로세스 (자식의 자식)를 생성하고 자식을 강제 종료하도록 결정했습니다. 이 해결 방법이 작동하는 것처럼 보이지만 실제로는보기 흉한 것처럼 보입니다.
더 파이썬으로 만들 수 있습니까? 서브 프로세스 모듈은 함수에서 작동 할 메소드를 가지고 있습니까? 아래 샘플 코드. 여기
import multiprocessing
import time
import sys
import os
def parent_child():
p = multiprocessing.current_process()
print 'Starting parent child:', p.name, p.pid
sys.stdout.flush()
cc = multiprocessing.Process(name='childchild', target=child_child)
cc.daemon = False
cc.start()
print 'Exiting parent child:', p.name, p.pid
sys.stdout.flush()
def child_child():
p = multiprocessing.current_process()
print 'Starting child child:', p.name, p.pid
sys.stdout.flush()
time.sleep(30)
print 'Exiting child child:', p.name, p.pid
sys.stdout.flush()
def main():
print 'starting main', os.getpid()
d = multiprocessing.Process(name='parentchild', target=parent_child)
d.daemon = False
d.start()
time.sleep(5)
d.terminate()
print 'exiting main', os.getpid()
main()
사용중인 OS는 무엇입니까? – Keith
@Keith, 방금 질문을 업데이트했습니다. 유닉스처럼. – Peter