Python, 멀티스레딩, 멀티프로세싱(백그라운드에서 실행)의 예
쓰다. 수알치 오상문
(멀티스레딩 예시)
# 멀티스레딩백그라운드 처리
# 유휴 상태에서도 잘 작동합니다. (쓰레드라서…)
# 결과 실행 순서는 보장되지 않습니다.
스레드 가져오기
수입 시간
# 백그라운드 애플리케이션
작업 정의(이름, i):
# 백그라운드에서 처리할 함수 정의
s = f’\n{i} 시작… {이름} :’ + time.strftime(‘%y-%m-%d %H:%M:%S’, time.localtime(time.time( )))
인쇄물)
시간 수면(3)
s = f’\n{i} 종료.. {이름} :’ + time.strftime(‘%y-%m-%d %H:%M:%S’, time.localtime(time.time() ))
인쇄물)
def main(이름, i):
# 백그라운드에서 스레드로 처리할 함수 실행
t = threading.Thread(대상=작업, 인수=(이름, i,))
t.start()
__name__ == ‘__main__’인 경우:
이름=”한국”
범위(10)의 i에 대해:
main(이름, i+1)
# 메인 쓰레드는 여전히 실행 중
print(‘\n메인 스레드가 아직 실행 중입니다…’)
(실행 결과)
C:\python_ex> 파이썬 background_call.py
1 시작… KOREA :23-03-23 19:45:28
2 시작… 한국 :23-03-23 19:45:28
3 시작… KOREA :23-03-23 19:45:28
메인 쓰레드는 계속 실행 중…
1회말.. 한국 :23-03-23 19:45:31
2회말.. 한국 :23-03-23 19:45:31
3회말.. 한국 :23-03-23 19:45:31
(다중 처리 예)
# 다중 처리백그라운드 처리
# IDLE에서는 작동하지 않습니다. (명령줄에서 실행)
# 결과 실행 순서는 보장되지 않습니다.
다중 처리 가져오기
수입 시간
# 백그라운드 애플리케이션
작업 정의(이름, i):
# 백그라운드에서 처리할 함수 정의
# …
s = f’\n{i} 시작… {이름} :’ + time.strftime(‘%y-%m-%d %H:%M:%S’, time.localtime(time.time( )))
인쇄물)
시간 수면(3)
s = f’\n{i} end… {name} :’ + time.strftime(‘%y-%m-%d %H:%M:%S’, time.localtime(time.time( )))
인쇄물)
__name__ == ‘__main__’인 경우:
이름 = ‘한국’
Multiprocessing.Pool(3)을 풀로 사용:
pool.starmap(작업, ((이름,1,), (이름,2,), (이름,3,)))
print(‘\n메인 프로세스가 아직 실행 중입니다…’)
(실행 결과)
C:\python_ex> 파이썬 background_call2.py
1 시작… KOREA :23-03-23 19:42:25
2 시작… 한국 :23-03-23 19:42:25
3 시작… KOREA :23-03-23 19:42:25
2회 종료… KOREA :23-03-23 19:42:28
3종료… KOREA :23-03-23 19:42:28
1종료… KOREA :23-03-23 19:42:28
메인 쓰레드는 계속 실행 중… <--- 다중 처리 풀이 가득 차면 처리됩니다!
