크롤링을 할 때 보통 requests와 BeautifulSoup을 통해 크롤링을 한다. 빠르긴 하지만 몇 만개의 데이터를 처리할 때는 이마저도 느리게 보인다. 더 빠르게 처리하기 위해서 크롤링을 혼자서가 아닌 여러명에서 하면 된다. 그것이 바로 멀티 프로세싱을 이용하는 방법이다. 모듈 설치 pip install multiprocess 일단 multiprocess를 설치한 후 모듈을 import 한다 from multiprocessing import Pool, Manager 예제 freeze_support() # 코어 수 pool = Pool(processes=5) # 함수, 파라미터 pool.starmap(crawl_link, zip(link_list,repeat(novel_df_list))) pool...

전체 글
vscode에서 주피터 노트북으로 코드를 작성하는데 왠지는 모르지만 뭘 잘못 눌렀는지 작성중이덴 셀이 삭제되었다. 찾아보면 ctrl+z를 누르라는데 누르는 순간 삭제된 셀이 복구되는게 아니라 기존에 있던 셀이 하나 더 삭제되는 불상사가 일어났다.그러니 셀이 삭제되면 ctrl+z를 누르지 말고 ctrl+shift+z를 누르자 그럼 삭제되었던 셀이 복구된다.하지만 혹여 모를 불상사를 대비해 먼저 백업 해놓고 해보길 바란다.
sorted와 sort()의 차이점은? sort() 설명 리스트에서만 사용 가능한 메서드(함수) 리스트 객체 자체를 정렬해줌 리스트 자체를 정렬하기에 반환이 없다. 기본적으로 오름차순 정렬이다. 대문자와 소문자가 섞여있을 경우, ASCII CODE를 참조하여 오름차순으로 정렬한다. 코드 import random list_a = [random.randint(-10, 15) for i in range(10)] list_b = [chr(random.randint(97, 122)) for i in range(10)] list_c = [chr(ascii_list[random.randint(0, 51)]) for _ in range(10)] print(list_a) # [1, 4, -7, 3, -10, 2, -8,..
모듈 임포트 import re 문자열 str = '[] 1234234 AS{@HG(A#T)}DGL !LKDG@(NGLS)ㅁㄴㅇㅎㅅㅂ' 출력 결과 [] 1234234 AS{@HG(A#T)}DGL !LKDG@(NGLS)ㅁㄴㅇㅎㅅㅂ 대괄호 제거 str = re.sub(r"\s*\[.*?\]", "", str) 출력 결과 1234234 AS{@HG(A#T)}DGL !LKDG@(NGLS)ㅁㄴㅇㅎㅅㅂ 중괄호 제거 str = re.sub(r"\s*\{.*?\}", "", str) 출력 결과 [] 1234234 ASDGL !LKDG@(NGLS)ㅁㄴㅇㅎㅅㅂ 소괄호 제거 str = re.sub(r'\([^)]*\)', '', str) 출력 결과 [] 1234234 AS{@HG}DGL !LKDG@ㅁㄴㅇㅎㅅㅂ 특수문자(.,@..
오류 csv 파일을 불러오는데 'utf-8' codec can't decode byte 0xb1 in position 1: invalid start byte 이런 오류가 뜬다. 해결법 encoding으로 cp949 또는 euc-kr를 넣어주면 된다.
크롤링을 할 때 보통 requests와 BeautifulSoup을 통해 크롤링을 한다. 빠르긴 하지만 몇 만개의 데이터를 처리할 때는 이마저도 느리게 보인다. 더 빠르게 처리하기 위해서 크롤링을 혼자서가 아닌 여러명에서 하면 된다. 그것이 바로 멀티 프로세싱을 이용하는 방법이다. 모듈 설치 pip install multiprocess 일단 multiprocess를 설치한 후 모듈을 import 한다 from multiprocessing import Pool, Manager 예제 freeze_support() # 코어 수 pool = Pool(processes=5) # 함수, 파라미터 pool.starmap(crawl_link, zip(link_list,repeat(novel_df_list))) pool...
📙 큐(Queue) 큐는 선입선출 형태로 먼저 넣은 데이터가 삭제할 때 먼저 나가게 되는 형태다 💻 큐 기본 구조 💻 큐 넣기 먼저 데이터를 넣을 용량을 설정하고 큐 내부를 비운 다음, 데이터를 넣고 rear(데이터를 넣을 빈 공간)을 +1 해준다. 기본적으로 rear는 -1에서부터 시작한다. def enQueue(): global rear, queue_list data = input("데이터 입력") if len(queue_list) == 0: print('큐가 비어있음') return rear += 1 queue_list[rear] = data 💻 큐 삭제(빼기) 가장 처음 데이터를 지우고 다음 데이터들을 앞으로 땡긴다. def deQueue(): global front, rear, queue_lis..
📙더블 링크드 리스트 💻더블 링크드 리스트 더블 링크드 리스트(Double Linked List)는 한 쪽으로밖에 갈 수 없는 단순 리스트(Linked list)를 보안하혀 만들어졌다. 한 번 시작하면 한 쪽으로밖에 갈 수 없는 것에 비해 더블 링스드 리스트는 앞과 뒤의 위치가 저장되어 데이터 정의에 용이하다. 💻 기본 형태 💻 노드 생성 노드 생성은 단순 연결 리스트와 같다. class Node: def __init__(self): self.prev = None self.data = None self.next = None 현재 노드를 기준으로 이전 노드를 저장할 prev와 다음 노드를 저장할 next를 가지고있다. 💻 노드 삽입 노드 삽입은 3가지 경우가 있다. head 앞 일때 노드 사이일 때 마지막..