파이썬 병렬처리 관련 질문이 있습니다.
345
5 câu hỏi đã được viết
안녕하세요 질문이 있습니다.
스레드 또는 프로세스 최대 생성 개수을 300개로 제한을 두고,
특정 스레드 또는 프로세스의 작업 종료시점에 새로운 스레드 또는 프로세스 생성하여 제한 개수를 지속적으로 유지할 수 있는 방법이 궁금합니다.
즉 생성 제한개수 300개는 넘지 않지만
300개 이하시 계속적으로 추가하며 300개를 지속적으로 유지하며 실행할 수 있는 방법이 있을까요?
구체적으로 예를들면 300개를 생성했는데
몇개의 프로세스가 작업을 완료하면 300개의 제한선에서 몇개의 생성 가용 개수가 허용될텐데(ex, -3개 종료 시 남은 수 297개: 3개 추가 가능)
이를 다른 스레드나 프로세스 종료를 기다리지 않고, 바로 다시 생성해서 채울 수 있는 방법이 있을까요?(ex, 남은 수 297개 + 추가 가능 3개: 300개)
단 항상 최대 수치는 300개입니다.
코멘트 주시면 감사하겠습니다.
(만약 가능하시다면 코드로 말씀해주시면 더욱 감사하겠습니다!)
Câu trả lời 1
0
안녕하세요.
좋은 질문이예요! 예제로 한 번 만들어봐도 좋을 것 같습니다.
임계치의 스레드를 유지하는 방법에 대해서 질문 주신 것 같습니다.
코드를 제공드리는건 쉽지 않을 것 같습니다. 다만, 시간을 가지고 다음 예제로 한 번 추가해 보도록 하겠습니다.
짧은 검색으로는 대기열에 스레드를 담아놓고 완료된 스레드를 체크 후 제거해주고
지속적으로 생성하는 방법이 주로 쓰이는 것 같습니다.
해당 코드는 검색으로는 찾기 힘든것 같네요. 혹여나 발견한다면, 제공드리도록 하겠습니다.
감사합니다. 제가 읽어봤던 링크를 전달 드립니다.
https://discuss.python.org/t/thread-limits/24346/6
0
https://superfastpython.com/threadpool-python/
threadpool를 사용 후
pool의 사이즈를 정의후(300)
완료 된 스레드는 제거
완료 할 스레드는 다시 pool에 주입
형태도 생각해볼 수 있을 것 같습니다.
1
답변 감사합니다.
제가 이 질문을 드린 이유는 프로그램 동작의 안전성을 위해서
때에 따라서 병렬처리의 프로세스 개수의 제한은 필수적으로 요구될 수 있을 것 같아서입니다.
즉 안전성을 위한 개수를 제한하되, 개수 내의 병렬처리의 효율성을 유지시키고 싶은 생각입니다.
강의에서 말씀하신대로 join을 이용하면 자식 프로세스가 완전히 종료 후,
다시 프로세스 개수를 제한하여 안정적으로 동작을 시킬 수 있지만(자식 프로세스의 무제한 생성 방지)
만약 자식 프로세스가 특정 현상(네트워크 지연 트래픽등)으로 처리가 지연된다면
부모가 해당 자식을 기다리게 되어 join을 이용시 병렬 처리의 효율성이 매우 떨어질 것 같습니다.
이를 해결하기 위한 파이썬의 문법이나 코딩 기술이 있는지 궁금했습니다.
혹시 추후에 아이디어가 생각나시거나 추가로 코멘트 주실 사항이 있으면
언제든지 연락주시면 감사하겠습니다.
Pros and Cons 관련하여 질문드립니다
0
58
1
daemon=True가 안 먹히네요
0
82
2
threadpoolexecutor.submit 실행 시 순차 실행
0
211
2
queue 를 사용하는 이유?
1
224
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
272
1
py_ad_2_5_2 Sharing State의 Argument 부분
0
298
1
Thread(4) 16:10 스레드 질문
0
334
1
10:10쯤에 질문있습니다.
0
250
1
multiprocessing(5) - Queue 공유 질문 in multiprocess
0
429
1
seleniumwire multiprocessing 에러
0
723
1
logging과 print 차이 질문입니다..!
0
656
1
확장프로그램 질문입니다
0
292
1
KeyboardInterrupt 시 p.join에서 exception 발생
0
412
1
경쟁상태,교착상태, 메모리영역
0
257
1
ProcessPoolExecutor 사용 시 pid 증가
0
351
1
multiprocess 환경에서 특정 Process에 문제가 있거나 죽었을때 처리 방법
0
750
1
ThreadPoolExecutor 에서 max_workers 질문입니다.
2
1520
1
1-3강의 내용중 질문있습니다.
0
237
1

