작성
·
23
0
안녕하세요 py_ad_1_5.py 파일 관련 강의 듣다가 질문 드립니다.
threading.Thread로 스레드 직접 두 개 만들어서, start()를 했을 때는 두 작업이 병렬적으로 진행되는 것으로 보였는데요 (First, Second에 해당하는 logging이 번갈아 찍혔습니다)
하지만, executor.submit으로 실행시에는 First task에 해당하는 logging이 전부 끝난 다음에 Second task에 해당하는 logging이 시작되는 것을 확인했습니다.
submit으로 실행시에는 내부에 join이 있다거나 별도의 동작이 있는 걸까요?
답변 2
0
오 좋은 질문 감사합니다.
아래 링크를 읽어보세요. 순차 실행이지만, 경우에 따라 다르게 실행되요!
https://leeyh0216.github.io/posts/truth_of_threadpoolexecutor/
0
처음엔 max_worker를 3으로 두었는데, 실험하고자
task 추가 or max_worker를 변경하면서 돌려보니 logging이 순차적으로 찍힐 때랑 병렬적으로 찍힐 때가 혼재하는 거 같습니다.. 노트북은 m3 pro입니다. 이유가 궁금하네요 ㅠㅠ
네 맞습니다. 운영체제에서 순서를 할당하기 때문에
순차 또는 병렬로 로깅이 출력 될 것입니다.
만약 그 소스코드를 윈도우에서 출력해도 마찬가지일 것 같은데
https://stackoverflow.com/questions/67189283/how-to-keep-the-original-order-of-input-when-using-threadpoolexecutor
위에 예제처럼 순서 고려해야 할 경우 map 등으로 사용하실 수 있습니다.
감사합니다.