inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)

multiprocessing(5) - Queue, Pipe

메인 프로세스의 실행 흐름에 대해 궁금한 것이 있습니다.

200

swtm

작성한 질문수 15

1

안녕하세요 선생님

 

py_ad_2_6_1.py를 실행하면서 생긴 궁금증이 있습니다.

제가 임의로 다음과 같이 process.join() 뒤에 프린트 문을 넣었습니다.

    for process in processes:
        process.join()
        print('s', end=' ')

 

그래서 실제 어떻게 찍히는 지 봤더니 다음과 같았습니다.

Process ID: 7380, Process Name: 10
Result : 100000000
s s s s s s s s s s s s s s s s s s s s --- 4.202337026596069 seconds ---

즉 모든 서브프로세스(여기서는 20개 설정했습니다.)가 작업을 끝마치고 join for 문이 돈 거 같습니다. s가 그 이후에 쭈르륵 프린트 된 것을 보면요.

근데 join을 했기 때문에 메인 프로세스가 다음 단계로 넘어가지 않고 기다리는 것 같은데 어떻게 바로 s가 찍히지 않고 join을 실행할 수 있었는지 궁금합니다.

모든 서브 프로세스에 join을 걸기 위해선 print(s)를 반드시 하고 넘어가야 하는 것 처럼 보이기 때문입니다.

감사합니다.

 

python 동시성

답변 1

0

좋은사람

네 보통은 프로세스는 병렬로 동시에 처리하는 구문으로 사용해여~~

join을 건다면 다른 프로세스가 실행 종료 될 때까지 임시 대기 이므로,

경우에 따라서 결과가 상이한 값이 나오는게 맞아여

 

Pros and Cons 관련하여 질문드립니다

0

72

1

daemon=True가 안 먹히네요

0

97

2

threadpoolexecutor.submit 실행 시 순차 실행

0

222

2

queue 를 사용하는 이유?

1

241

1

멀티프로세싱 관련 질문

0

189

1

python gil 삭제

0

371

1

4분:59초 질문 그룹쓰레드 (5). 대기중인 작업 -> Queue -> 완료 상태조사 -> 결과 또는 예외 -> 단일화(캡슐화) 에 관해서

0

174

1

데몬스레드 설명

0

241

1

작업영역 질문

0

310

1

cmd에서 code작성시 기존에 깔아둔 vscode에서 이상한 화면이 뜨네요

0

290

1

ThreadPoolExecutor에서 작업중인 쓰레드가 있을때 대기할수 있는 방법이 있는지요?

0

286

1

py_ad_2_5_2 Sharing State의 Argument 부분

0

301

1

Thread(4) 16:10 스레드 질문

0

343

1

파이썬 병렬처리 관련 질문이 있습니다.

0

352

1

10:10쯤에 질문있습니다.

0

257

1

multiprocessing(5) - Queue 공유 질문 in multiprocess

0

435

1

seleniumwire multiprocessing 에러

0

729

1

logging과 print 차이 질문입니다..!

0

671

1

확장프로그램 질문입니다

0

299

1

KeyboardInterrupt 시 p.join에서 exception 발생

0

420

1

경쟁상태,교착상태, 메모리영역

0

259

1

ProcessPoolExecutor 사용 시 pid 증가

0

354

1

multiprocess 환경에서 특정 Process에 문제가 있거나 죽었을때 처리 방법

0

754

1

ThreadPoolExecutor 에서 max_workers 질문입니다.

2

1533

1