본문 바로가기

multiprocess

(4)
CPU Bound(2) - Multi-process CPU 연산 - 멀티 프로세스 from multiprocessing import current_process, Array, freeze_support, Process, Manager import time import os def cpu_bound(number, total_list): process_id = os.getpid() process_name = current_process().name # Process 정보 출력 print(f"Process ID: {process_id}, Process Name: {process_name}") total_list.append(sum(i * i for i in range(number))) def main(): numbers = [3_000_000 + x for x..
[Python] I/O Bound(2) - Multiproecessing 통신관련 멀티프로세스 처리(동기방식) import multiprocessing import requests import time # 각 프로세스 메모리 영역에 생성되는 객체(독립적) # 함수 실행 할 때 마다 객체 생성은 좋지 않음. -> 각 프로세스마다 할당 session = None def set_global_session(): global session if not session: session = requests.Session() print('>>> not session()') def request_site(url): # 세션 확인 print(session) # print(session.headers) with session.get(url) as response: name = multiproces..
[Python] Multiprocessing(3) - ProcessPoolExecutor ProcessPoolExecutor 을 이용한 샘플 코드 - 여러 사이트 크롤링 샘플 코드 from concurrent.futures import ProcessPoolExecutor, as_completed import urllib.request # 조회 URLS, url 이 정상동작 안하면 오류 발생 URLS = [ 'https://www.daum.net/', 'http://www.cnn.com/', 'https://naver.com/', 'http://www.bbc.co.uk/', 'http://ruliweb.com' ] # 실행 함수 def load_url(url, timeout): with urllib.request.urlopen(url, timeout=timeout) as conn: return..
[Python] Multiprocessing(1) - Join, is_alive 프로세스 생성방법 - 기초 from multiprocessing import Process import time import logging # 프로세스 실행 함수 def proc_func(name): # 프로세스에서는 로깅 방법을 각각 설정해야 함. # Logging format 설정 format = "%(asctime)s: %(message)s" logging.basicConfig(format=format, level=logging.INFO, datefmt="%H:%M:%S") logging.info("Sub-Process {}: starting".format(name)) logging.info("Sub-Process {}: starting".format(name)) time.sleep(3) loggi..