본문 바로가기

분류 전체보기

(71)
[Python] 파이썬 CPU 확장 방법 2 (퓨처스) 이번 페이지에서는 CPU 확장 방법 중 하나인 '퓨처스'에 대해 설명한다. 멀티 프로세스와 멀티 스레드 관련 포스트는 이전 포스트를 참고한다. https://tttto-factory.tistory.com/7 파이썬 - CPU 확장 방법 1 (멀티 스레드, 멀티 프로세스) CPU 확장 이유? CPU 속도는 무한히 빨라질 수 없으므로, 애플리케이션에 동시성 + 병렬성 도입 CPU 확장 방법 1. 스레드 여러 함수를 동시에 실행하기에 좋다 싱글 CPU : 스레드 차례로 실행 멀� tttto-factory.tistory.com futures 사용하기 파이썬3 : concurrent.futures 모듈을 사용하면 비동기 작업 쉽게 처리 가능 파이썬2 : pip install futures명령으로, 파이썬 2에도 ..
[Python] 파이썬 CPU 확장 방법 1 (멀티 스레드, 멀티 프로세스) CPU 확장 이유? CPU 속도는 무한히 빨라질 수 없으므로, 애플리케이션에 동시성 + 병렬성 도입 CPU 확장 방법 1. 스레드 여러 함수를 동시에 실행하기에 좋다 싱글 CPU : 스레드 차례로 실행 멀티 CPU : 여러 CPU에서 스레드 실행 GIL의 제약으로 완벽한 확장 솔루션이 아님 import threading def print(line): print(line) # 스레드 실행 후 완료 대기 t = threading.Thread(target=print, args("multithread Hi",)) t.start() print("threading start") # 스레드 완료될 때까지 메인 스레드 대기 t.join() 스레드를 데몬으로 돌리면 백그라운드 스레드로 간주됨. 메인 스레드 종료 후 같이..
selenium 으로 크롤링 하기 - selenium의 기초 크롤러 만들기 Selenium이란? Selenium(셀레늄)은 웹 애플리케이션 테스트를 위한 포터블 프레임워크이다. 웹 크롤링을 할 때, 사용하기 편리하다. selenium을 설치하기 위해서는 두가지 방법이 있습니다. pip install selenium 위와 같이 cmd 창을 통해 해당 project가 생성되어 있는 폴더에 들어가서 설치하는 방법이 있다. [File]-[Settings]에 들어가면 위와 같은 창이 뜬다. 오른쪽에 +를 누른다. selenium을 검색해서 아래 Install Package 버튼을 눌러도 설치할 수 있다. https://sites.google.com/a/chromium.org/chromedriver/downloads 해당 사이트에 들어가면 설치할 수 있다. Current Releases라..
[BOJ 2583] 백준 2583 영역 구하기 #문제 해결 방법 DFS와 BFS 둘다 사용 가능할 것으로 예상했고, DFS를 선택해서 풀었다. x1, y1, x2, y2를 입력받을 때 마다, arr에 바로 1로 표시해주었다. 문제에서 주어진 좌표와 똑같이 표현하기 위해서, y좌표는 (n-y2) ~ (n-y1)으로 loop을 돌렸다. DFS를 호출하기전에 block 개수를 0으로 초기화한다. DFS를 호출하고, 호출할 때 마다 block의 갯수와 visit 함수에 true 값을 넣었다. #include #include #include using namespace std; //좌 우 위 아래 int dx[4]={-1,1,0,0}; int dy[4]={0,0,-1,1}; int arr[101][101]={0,}; bool visit[101][101]={f..
[BOJ 2748] 백준 2748 피보나치 수 2 #입출력 예제 입력1 :: 10 예제 출력1 :: 55 #문제 해결 방법 dp를 사용하는 것이 최선의 방법. dp[91]의 배열을 선언한 후(**n은 최대 90까지 값을 가지므로, 91개의 배열을 선언했다.), dp[0]과 dp[1]을 활용해서, dp[2]를 구하고, dp[1]과 dp[2]을 활용해서, dp[3]을 구하는 방법으로 입력 값 까지 dp값을 구했다. dp[90] 값을 구할 때는, 값이 상당히 커진다. (**2880067194370816120) 따라서 dp배열을 long long으로 선언하는 것이 **포인트**였다. #include using namespace std; void fibonacci (int number){ long long dp[91]; dp[0]=0; dp[1]=1; for(i..
[Algorithm] Decomposition of graphs >> DFS chapter 3 Decompositions of graphs 3.1 Why graphs? - 그래프는 vertex(정점)과 edge(간선)들로 이루어 진다. - undirected(무방향)일 경우 relation은 대칭이다. - directed(방향)일 경우는 대칭이 아니다. 3.1.1 How is a graph represented? ① 인접 행령 (adjacency matrix) vertex(정점)이 v1, v2, … ,vn 이고, n=|V|이면, n*n의 배열로 나타낼 수 있다. - aij = 1 ( vi에서 vj로의 간선(edge)가 있는 경우) aij = 0 ( vi에서 vj로의 간선(edge)이 없는 경우) undirected(무방향) 그래프일 경우 대칭이다. 특정 edge(간선)의 존재를 ..
[JAVA] 페이지 이동 히스토리 기록 #문제 페이지 히스토리를 기억하라. answer는 모든 페이지 이동 경로를 기억하며, 페이지 히스토리는 최근 5개의 페이지 이동 경로를 기억한다. 처음 실행될 때, 페이지는 0페이지 이다. 페이지는 최대 100페이지까지 있다. #입력값 예시 [다음 페이지로 이동] : 다음 페이지로 이동 [이전 페이지로 이동] : 이전 페이지로 이동 [페이지 히스토리 뒤로 가기] : 최대 5개로 저장된 히스토리에서 뒤로 이동 [페이지 히스토리 앞으로 가기] : 현재 열람한 히스토리 페이지의 앞으로 이동 [지정한 페이지로 이동 : n 페이지로 이동] : n 페이지로 이동한다 **주의할 점 : 페이지 히스토리 이동 시에는, 히스토리를 열람하는 것이기 때문에, 새로 추가되는 히스토리 없다.** #예시 #1 ## 다음 페이지로 ..