O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Reduce testing time by Multiprocessing in python

540 visualizações

Publicada em

This ppt is based on the Multiprocessing in python package.
So I describe "How to use the Multiprocessing easily when we test something."

Publicada em: Engenharia
  • Login to see the comments

Reduce testing time by Multiprocessing in python

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

×