Python의 os 모듈에는 하위 프로세스를 생성하기 위한 fork() 함수가 있습니다. 생성된 하위 프로세스는 상위 프로세스의 미러 이미지이지만 자체 주소 공간이 있습니다. 하위 프로세스는 상위 프로세스 메모리의 복사본을 자신에게 복사합니다. , two 프로세스 간의 실행은 서로 독립적이며 실행 순서는 불확실하고 무작위적이며 예측 불가능할 수 있으며 이는 멀티 스레드의 실행 순서와 유사합니다.
import os def child(): print 'A new child:', os.getpid() print 'Parent id is:', os.getppid() os._exit(0) def parent(): while True: newpid=os.fork() print newpid if newpid==0: child() else: pids=(os.getpid(),newpid) print "parent:%d,child:%d"%pids print "parent parent:",os.getppid() if raw_input()=='q': break parent()
os 모듈을 로드한 후 상위 함수의 fork() 함수는 두 개의 반환 값인 newpid가 있는데, 하나는 하위 프로세스를 나타내는 0이고, other is 0보다 큰 정수는 상위 프로세스를 나타내는 데 사용됩니다. 이 상수는 하위 프로세스의 pid입니다. print 문을 통해 두 개의 반환 값을 명확하게 볼 수 있습니다. fork()의 반환 값이 음수 값이면 하위 프로세스가 성공적으로 생성되지 않았음을 나타냅니다(이 간단한 프로그램에서는 이 상황을 고려하지 않습니다). newpid==0이면 자식 프로세스, 즉 child() 함수를 입력했다는 의미이며, 자식 프로세스에서는 자신의 id와 부모 프로세스의 id를 출력한다. else 문이 입력되면 newpid>0을 의미하며 상위 프로세스에서 os.getpid()는 자체 ID를 가져옵니다. newpid는 해당 프로세스의 ID를 나타냅니다. 동시에 부모 프로세스의 부모 프로세스 ID를 출력합니다. 실험을 통해 if 및 else 문의 실행 순서가 불확실하다는 것을 알 수 있습니다. 운영 체제의 스케줄링 알고리즘.