Python 5

[Python] Multi Processing과 [Java] Multi Processing 차이

🍎 Python Crawling Application을 개발하면서 I/O Bound 작업 처리는 Thread를 사용해 처리하는 것이 유리하고 CPU Bound 작업 처리 시엔 자식 프로세스를 여럿 생성해 작업을 처리하는 것이 유리하다고 배웠습니다. 그런데 Java 진영에선 Multi Processing을 어떻게 처리할까요? ❓ 어디서부터 비롯된 궁금증인가요? • Python 진영에선 Multi Processing을 자식 프로세스를 생성해 CPU Bound 작업을 맡아하는 반면 Java 진영에선 여러개의 JVM Instance를 추가적으로 생성해 처리하지 않습니다. 어떤 방식으로 Java 진영에서 Multi Processing을 처리할까요? 🍎 Java는 Thread를 통해서 Multi Processing..

TIL 2023.04.24

[Python] Thread 설계 의도를 파악한 성능 개선. 7초에서 3초로

💻 Crawling Application Code에서 I/O Bound 작업 처리 시, threading Module과 concurrent.futures Module를 사용했습니다. - 두 Module의 장단점을 알지 못한 채 사용해 이번 포스팅에서 깊게 다뤄보겠습니다. 🍎threading Module과 concurrent.futures Module을 사용하는 이유는 해당 포스팅에서 확인할 수 있습니다. 🍎 thread.Thread와 concurrent.futures.ThreadPoolExecutor의 특징을 알아봅시다. 🍏thread.Thread의 특징 - Process안에 존재해 작업 처리 시 사용됩니다. Thread를 사용하는 두 가지 이유는 아래와 같습니다. 1️⃣ Target Method를 실행..

TIL 2023.04.11

파이썬 성능을 높이고 싶을 때 알아야 할 것

❓ 파이썬 환경에서 Multi Thread, Multi Processing의 차이점 그리고 성능을 높이고 싶다면? 파이썬에서 멀티 스레드와 멀티 프로세스는 동시에 여러 작업을 수행하는 방식이지만, 그 구현 방식에 차이가 있습니다. • 멀티 스레드는 한 프로세스 내에서 여러 개의 스레드가 동시에 실행되는 방식입니다. 각 스레드는 공유된 메모리에 접근하여 작업을 수행합니다. 이로 인해 스레드 간의 통신이 빠르고 간단하며, 메모리를 공유하기 때문에 메모리 사용량이 적습니다. • 하지만, 공유 메모리에 대한 동시성 제어가 필요하며, 이를 관리하는데 복잡한 코드가 필요할 수 있습니다. 또한, Global Interpreter Lock 제약 조건이 있어 하나의 스레드만 파이썬 인터프리터 내에서 실행될 수 있습니다...

TIL 2023.04.06

Crawling 성능 40배 올리기, 160분에서 4분대로 -병렬 처리-

👕 크롤링 애플리케이션은 JBLY 프로젝트 요구 사항인 "파이썬 환경에서 최소 세 개 이상의 쇼핑몰을 모아볼 수 있다."를 수행하는 애플리케이션입니다. 시리즈 포스팅은 성능 개선 과정에서 겪은 문제점과 해결하는 과정을 담고 있습니다.✒️ 첫 번째 요구사항 충족 글은 성능이 개선되기 전 요구 사항 달성 과정을 포스팅합니다. (160분 소요)✒️ 두 번째 도구 선택의 중요성 글은 Selenium Tool 걷어내는 과정에서 성능 개선 방법에 대해 포스팅합니다. (30분대로 성능 개선)✒️ 세 번째 병렬 처리 글은 병렬 처리를 통해 성능을 높일 수 있는 방법에 대해 포스팅합니다.(4분대로 성능 개선) 🍏 지금까지 Selenium을 사용해 Crawling을 진행하고 Selenium 도구의 단점을 알게 되어 걷..

Dev 2023.04.06

Crawling 성능 40배 올리기, 160분에서 4분대로 -요구사항 충족-

👕 크롤링 애플리케이션은 JBLY 프로젝트 요구 사항인 "파이썬 환경에서 최소 세 개 이상의 쇼핑몰을 모아볼 수 있다."를 수행하는 애플리케이션입니다. 시리즈 포스팅은 성능 개선 과정에서 겪은 문제점과 해결하는 과정을 담고 있습니다.✒️ 첫 번째 요구사항 충족 글은 성능이 개선되기 전 요구 사항 달성 과정을 포스팅합니다. (160분 소요)✒️ 두 번째 도구 선택의 중요성 글은 Selenium Tool 걷어내는 과정에서 성능 개선 방법에 대해 포스팅합니다. (30분대로 성능 개선)✒️ 세 번째 병렬 처리 글은 병렬 처리를 통해 성능을 높일 수 있는 방법에 대해 포스팅합니다.(4분대로 성능 개선) 🍎 Crawling지정한 임의의 세 개의 쇼핑몰을 모아볼 수 있는 기능을 구현하기 위해선 어떤 방법으로 해결..

Dev 2023.04.04