import docker 필요한 라이브러리 임포트 (https://docker-py.readthedocs.io/en/stable) def add_unit(mem: float) -> str: if mem > 1024**3: mem = round(mem / 1024**3, 2) mem = f"{mem}GiB" elif mem > 1024**2: mem = round(mem / 1024**2, 2) mem = f"{mem}MiB" elif mem > 1024: mem = round(mem / 1024, 2) mem = f"{mem}KiB" else: mem = round(mem, 2) mem = f"{mem}Byte" return mem 데이터 단위를 붙여주기 위한 함수 client = docker.Docke..
import GPUtil 필요한 라이브러리 임포트 (https://github.com/anderskm/gputil) def add_unit(mem: float) -> str: if mem > 1024: mem = round(mem / 1024, 2) mem = f"{mem}GiB" else: mem = round(mem, 2) mem = f"{mem}MiB" return mem 데이터 단위를 붙여주기 위한 함수 for gpu in GPUtil.getGPUs(): gpu_util = f"{gpu.load}%" mem_total = add_unit(gpu.memoryTotal) mem_used = add_unit(gpu.memoryUsed) mem_used_percent = f"{round(gpu.memor..
import os import re import time import socket from urllib.request import urlretrieve from urllib.error import HTTPError, URLError from selenium import webdriver from selenium.common.exceptions import ( ElementClickInterceptedException, NoSuchElementException, ElementNotInteractableException, ) from PIL import Image from pygame import mixer from datetime import date from concurrent.futures import..
멀티 쓰레드를 사용한다고 싱글 쓰레드에 비해서 무조건 작업 속도가 빨라지지 않는다. 이유는 파이썬의 GIL(Global Interpreter Lock) 때문인데, 다른 블로그의 글을 인용하자면 CPython에서의 GIL은 Python 코드(bytecode)를 실행할 때에 여러 thread를 사용할 경우, 단 하나의 thread만이 Python object에 접근할 수 있도록 제한하는 mutex이다. 그리고 이 lock이 필요한 이유는 CPython이 메모리를 관리하는 방법이 thread-safeness하기 때문이다. 결국 같은 시간에 실행되는 쓰레드는 무조건 1개이며, 멀티 쓰레드는 GIL이 적용되지 않는 즉, CPU 동작이 아닌 I/O 동작이 많은 프로그램에 구현했을 때 가장 이상적이다. 그렇다면 왜 ..
def save_model(tokenize, epochs, min_alpha, corpus_list, model_name): # Mecab tagger = Mecab() # corpus 저장 리스트 tagged_corpus_list = [] # corpus 생성 (TaggedDocument 추가) for corpus in corpus_list: # 태그 tag = corpus[0] # 내용 word = corpus[1] # tokenize에 따라 다른 방법으로 Word Tokenize if tokenize == 'morphs': tagged_corpus_list.append(doc2vec.TaggedDocument(tags=[tag], words=tagger.morphs(word))) elif token..