inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

345

카망베르

작성한 질문수 5

0

안녕하세요 질문이 있습니다.

 

스레드 또는 프로세스 최대 생성 개수을 300개로 제한을 두고,

특정 스레드 또는 프로세스의 작업 종료시점에 새로운 스레드 또는 프로세스 생성하여 제한 개수를 지속적으로 유지할 수 있는 방법이 궁금합니다.

 

즉 생성 제한개수 300개는 넘지 않지만

300개 이하시 계속적으로 추가하며 300개를 지속적으로 유지하며 실행할 수 있는 방법이 있을까요?

 

구체적으로 예를들면 300개를 생성했는데

몇개의 프로세스가 작업을 완료하면 300개의 제한선에서 몇개의 생성 가용 개수가 허용될텐데(ex, -3개 종료 시 남은 수 297개: 3개 추가 가능)

이를 다른 스레드나 프로세스 종료를 기다리지 않고, 바로 다시 생성해서 채울 수 있는 방법이 있을까요?(ex, 남은 수 297개 + 추가 가능 3개: 300개)

단 항상 최대 수치는 300개입니다.

 

코멘트 주시면 감사하겠습니다.

(만약 가능하시다면 코드로 말씀해주시면 더욱 감사하겠습니다!)

 

python 동시성

답변 1

0

좋은사람

안녕하세요.

좋은 질문이예요! 예제로 한 번 만들어봐도 좋을 것 같습니다.

임계치의 스레드를 유지하는 방법에 대해서 질문 주신 것 같습니다.

코드를 제공드리는건 쉽지 않을 것 같습니다. 다만, 시간을 가지고 다음 예제로 한 번 추가해 보도록 하겠습니다.

짧은 검색으로는 대기열에 스레드를 담아놓고 완료된 스레드를 체크 후 제거해주고

지속적으로 생성하는 방법이 주로 쓰이는 것 같습니다.

해당 코드는 검색으로는 찾기 힘든것 같네요. 혹여나 발견한다면, 제공드리도록 하겠습니다.

감사합니다. 제가 읽어봤던 링크를 전달 드립니다.

https://discuss.python.org/t/thread-limits/24346/6

https://stackoverflow.com/questions/19369724/the-right-way-to-limit-maximum-number-of-threads-running-at-once

0

좋은사람

https://superfastpython.com/threadpool-python/

threadpool를 사용 후

  1. pool의 사이즈를 정의후(300)

  2. 완료 된 스레드는 제거

  3. 완료 할 스레드는 다시 pool에 주입

형태도 생각해볼 수 있을 것 같습니다.

1

카망베르

답변 감사합니다.

 

제가 이 질문을 드린 이유는 프로그램 동작의 안전성을 위해서

때에 따라서 병렬처리의 프로세스 개수의 제한은 필수적으로 요구될 수 있을 것 같아서입니다.

즉 안전성을 위한 개수를 제한하되, 개수 내의 병렬처리의 효율성을 유지시키고 싶은 생각입니다.

 

강의에서 말씀하신대로 join을 이용하면 자식 프로세스가 완전히 종료 후,

다시 프로세스 개수를 제한하여 안정적으로 동작을 시킬 수 있지만(자식 프로세스의 무제한 생성 방지)

만약 자식 프로세스가 특정 현상(네트워크 지연 트래픽등)으로 처리가 지연된다면

부모가 해당 자식을 기다리게 되어 join을 이용시 병렬 처리의 효율성이 매우 떨어질 것 같습니다.

 

이를 해결하기 위한 파이썬의 문법이나 코딩 기술이 있는지 궁금했습니다.

혹시 추후에 아이디어가 생각나시거나 추가로 코멘트 주실 사항이 있으면

언제든지 연락주시면 감사하겠습니다.

 

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

0

57

1

daemon=True가 안 먹히네요

0

80

2

threadpoolexecutor.submit 실행 시 순차 실행

0

211

2

queue 를 사용하는 이유?

1

223

1

멀티프로세싱 관련 질문

0

176

1

python gil 삭제

0

369

1

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

0

165

1

데몬스레드 설명

0

235

1

작업영역 질문

0

302

1

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

0

284

1

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

0

271

1

py_ad_2_5_2 Sharing State의 Argument 부분

0

296

1

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

0

334

1

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

0

249

1

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

0

429

1

seleniumwire multiprocessing 에러

0

723

1

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

0

655

1

확장프로그램 질문입니다

0

291

1

KeyboardInterrupt 시 p.join에서 exception 발생

0

410

1

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

0

253

1

ProcessPoolExecutor 사용 시 pid 증가

0

349

1

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

0

746

1

ThreadPoolExecutor 에서 max_workers 질문입니다.

2

1517

1

1-3강의 내용중 질문있습니다.

0

234

1