파이썬 내부에 있는 여러개의 함수를 동시에 실행하는 구조
import multiprocessing # multiprocessing 모듈을 임포트하여 멀티프로세싱 기능을 사용
import time # time 모듈을 임포트하여 시간 관련 함수(예: sleep)를 사용
def func1():
"""
첫 번째 작업을 수행하는 함수.
이 함수는 10초간 대기한 후, "Function 1 is running"이라는 메시지를 출력합니다.
"""
time.sleep(10) # 10초 동안 대기 (시뮬레이션 작업, 여기서는 시간이 걸리는 작업을 흉내냄)
print("Function 1 is running") # 대기 후 메시지 출력
def func2():
"""
두 번째 작업을 수행하는 함수.
이 함수는 즉시 "Function 2 is running"이라는 메시지를 출력합니다.
"""
print("Function 2 is running") # 즉시 메시지 출력
# 메인 코드 블록
if __name__ == "__main__":
"""
이 블록은 스크립트가 직접 실행될 때만 실행됩니다.
이 코드는 자식 프로세스에서 다시 실행되지 않도록 보장하며,
Windows 플랫폼에서 특히 중요합니다.
"""
# func1을 실행할 첫 번째 프로세스를 생성
process1 = multiprocessing.Process(target=func1)
# func2를 실행할 두 번째 프로세스를 생성
process2 = multiprocessing.Process(target=func2)
# 생성된 첫 번째 프로세스를 시작
process1.start() # func1 함수가 별도의 프로세스에서 실행되기 시작
# 생성된 두 번째 프로세스를 시작
process2.start() # func2 함수가 별도의 프로세스에서 실행되기 시작
# 첫 번째 프로세스가 종료될 때까지 대기
process1.join()
# 이 코드는 process1이 완료될 때까지 메인 프로세스를 블록(block)합니다.
# process1이 실행을 마치면 다음 줄로 넘어갑니다.
# 두 번째 프로세스가 종료될 때까지 대기
process2.join()
# 이 코드는 process2가 완료될 때까지 메인 프로세스를 블록(block)합니다.
# process2가 실행을 마치면 다음 줄로 넘어갑니다.
# 두 개의 프로세스가 모두 종료된 후, 메인 프로세스에서 메시지를 출력
print("Both functions have finished executing.")
# process1과 process2가 모두 완료된 후에 실행됩니다.
# "Both functions have finished executing." 메시지를 출력하여 모든 작업이 끝났음을 알립니다.
실행 결과
Function 2 is running
Function 1 is running
Both functions have finished executing.