1. 멀티 프로세스를 이용한 테스트.
(Multiprocessing를 통한 테스트 소요시간 단축)
2019.03.27
데이터 비즈 파트
안상준
2. 멀티 프로세스를 이용한 테스트.
(Multiprocessing를 통한 테스트 소요시간 단축)
2019.03.27
데이터 비즈 파트
안상준
3. Multiprocessing…
• 다중 처리(多重處理)는 컴퓨터 시스템 한 대에 둘 이상의 중앙
처리 장치(CPU)를 이용하여 병렬로 처리하는 것을 가리킨다.
또, 이 용어는 하나 이상의 프로세서를 지원하는
시스템의 능력, 또는 이들 사이의 태스크를 할당하는 능력을
가리키기도 한다.[1] 다중 처리 시스템(Multiprocessing System)은
다중 처리가 적용된 시스템을 뜻한다.
https://ko.wikipedia.org/wiki/%EC%9E%90%EB
%8F%99%ED%99%94
8. 헌데, 테스트 해야 되는 문장이 많지 않나요?
일반 TC는 대충 1만 문장,
Precision Test는 3만 5천 Rule 키워드를
테스트 합니다.
9. 그럼, 테스트 결과는 얼마나 기다려야 되죠?
문장 Test = 약 6 시간
Precision Test = 약 13시간
총 약 19시간이 소모 됩니다.
10. 문장 TC만 해도 Working Time 안에 확인 가능 한가요?
오후에 테스트를 돌리게 되면 다음날
확인해야 되는 불상사가 생기게 되죠.
11. TC결과 확인이 늦으면, 그럼 다음 수정도 늦어 지겠네요?
네, 맞습니다. 그래서 다들
“테스트 얼마 남았어?”
“테스트 결과 언제 쯤 나올 것 같아요?”
라는 질문을 반복하죠.
앞으로도 이런 일은 반복 됩니다….
12. 테스트 수행시간이 너무 많이 드네요..
작업에 Pain point가 어딘가요?
네트워크(DF, IC Request), 디스크(Excel Read and Write) – I/O 작업.
라이브러리 참조(NLTK, SPACY), Logic수행(keyword 검출) – CPU 작업.
13. 그럼, 어떻게 테스트 시간을 줄일 수 있나요?
시간이 갈수록 문장 개수는 많아지고
TC시간은 점점 늘어날 텐데…
우린 새로운 방법은 찾아야 했습니다 !!
15. 헌데, 제가 알기론 Python은
Single Thread라고 한 것 같은데?
어떻게 병렬 처리를 하죠?
Multiprocessing Package는 병렬성과 동시성을 제공하며,
일반적인 Thread 대신에 서브 프로세스를 사용하여
Global Interpreter Lock을 효과적으로 회피 합니다.
16. 병렬성과 동시성은 같은 말 아닌가요?
병렬성 != 동시성
병렬성은 -> I/O (Network)에 대한 고민
동시성은 -> CPU Boundary에 대한 고민
17. Multiprocessing은 어떤 종류들이 있나요?
크게 Async and Sync로 나뉘게 됩니다.
http://blog.naver.com/PostView.nhn?blogId=parkjy76&logNo=221089918474&categoryNo
=48&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView
18. Async랑 Sync 많이 들어 보긴 했는데,
솔직히 어떤 차이죠?
Block && None Block의 차이
결과 값을 기다려주나요? 아닌가요?
19. Map, Apply는 어떻게 다른 거죠?
Map은 호출 인자로 Iterable 한 것만 넣을 수 있고.
Apply는 개별 args 를 넣을 수 있는 형태로 되어 있습니다.