kangtegong/self-learning-cs

파이썬으로 프로세스 다루기 코드에서 foo함수가 실행 안됨

Jay2021Y opened this issue · 3 comments

안녕하세요, 프로세스에 대한 다음의 파이썬 코드를 실행하면

from multiprocessing import Process
import os

def foo():
    print('child process is', os.getpid())
    print('my parent is', os.getppid())


if __name__ == '__main__':
    print('parent process', os.getpid())
    child = Process(target=foo).start()

다음의 결과만 출력됩니다.

parent process 4424

foo 함수가 실행되지 않는 것 같습니다.
(코드는 그대로 복붙해서 실행했습니다.)

이하의 코드들에서도 foo함수가 실행이 안되고 있습니다.

안녕하세요!

다음과 같이 코드가 순차적으로 실행될 수 있도록 바꿔 실행해보거나

    child = Process(target=foo)
    child.start()

프로세스 실행 후 종료할 때까지 대기하도록 join을 추가해보시겠어요?
(join은 해당 프로세스 종료시까지 대기하라는 메서드입니다)

    child = Process(target=foo)
    child.start() 
    child.join()  

답변 감사드립니다.
그런데 말씀해주신 두가지 방법 모두 같은 결과가 나오네요...
파이썬 ILDE를 통해 실행했었었는데요.

윈도우 명령 프롬프트에서 파이썬 파일을 실행(py -3.11 process.py) 해보니
정상적으로 결과가 출력되었습니다.
왜 이런 걸까요?

음.. 방금 파이썬 IDLE 포함 다양하게 시도해보았는데
제 환경에서는 큰 문제가 없어 정확한 원인을 짐작하기 쉽지 않은 듯 합니다..
사용하신 파이썬 IDLE 환경에서 multiprocessing이 제대로 import가 되었는지
사용하신 파이썬 버전이 다른 것은 아닐지 확인해보시는 것도 방법일 것 같습니다.