Python 병렬처리
코드 연습 추천 블로그
프로세스간 커뮤니케이션(IPC)
MultiThreading과 MultiProcessing의 차이를 알아보자.
MultiThreading vs MultiProcessing
Thread와 Process 개념을 잡기 위한 그림
Process들은 Parallel 하게 처리되고 있으며, Thread들은 Concurrent하게 실행되고 있다.
CPU 하나에서 진행되는 작업을 Process라고 하며, 하나의 Process는 여러개의 Thread를 가질 수 있다.
하나의 Process안에서 Thread들은 메모리를 서로 공유한다.
한 Process가 여러 Thread를 실행하는것을 Co...
Git 명령어 백과사전
git branch
remote, local branch를 연동시킬 때
# local branch로 switched 되어있는것으로 가정
git branch --set-upstream-to "저장소 keyword/저장소의 branch"
# 예시
git branch --set-upstream-to origin/master
remote, local branch를 모두 보고 싶을 때
# 만약 remote의 정보가 최신화가 안되어 있다면 git fetch로 remote 정보를 받아온 다음 아래 명령어를 칠 것
git branch -a
remote의 branch 내용을 로컬에 반영하면서 b...
실전 문제풀이(DFS, BFS)
1260 (DFS와 BFS)
난이도: 실버2
문제에서 양방향으로 그래프가 이루어져 있다고 해서 들어온 입력을 인접 리스트로 푸는게 나을지, 인접 행렬로 푸는게 나을지 감이 오지 않아서 인접 리스트로 접근하였고 상당히 오래걸렸다. 다음의 개념을 알고 있으면 다음번엔 훨씬 수월하게 풀 수 있을 것이다.
양방향이기 때문에 row 2만 접근해도 2와 연결되어 있는 모든 노드를 알 수 있다.
처음에 이 부분을 생각하지 못해서 인접 행렬로 구현하는데 어려움을 겪었다.
위 그림은 단방향 인접 행렬임.
양방향 그래프를 초기화 하는 방법은 다음과 같다.
INF = 1e+10
N, M, start_...
실전 문제풀이(구현)
10870번 (피보나치)
난이도: 브론즈 5
재귀함수를 이용해서 바로 맞췄지만, 점화식이라는 점을 활용해서 바텀업 방식으로 풀어보고자 하였다.
테스트 케이스는 맞췄지만 제출했을 때 90% 지점에서 틀렸다고 나와서 처음엔 문제가 잘못된 것인 줄 알았다…
내가 작성한 코드
```python
N = int(input())
d = [0] * (N+1) # N까지 인덱싱 해야 하므로
d[0] = 0
d[1] = 1
for i in range(2, N+1):
if N >=2:
d[i] = d[i-1] + d[i-2]
print(d[N])
원인은 d 배열을 동적할당 하려는 것에 있었...
데이터 베이스 백과사전
본 포스트는 데이터 전처리를 위해 pandas를 자유자재로 활용하기 위해 필요한 데이터 베이스 기본 지식들을 정리하려 한다.
join
공통된 column에서 새로운 result table을 만들기 위함이다.
일반적으로 가장 많이 쓰는 join은 inner join으로 동일한 column에 대해 모든 데이터를 다 가져오는것이다.
아래의 적용 예시를 보자
import pandas as pd
import numpy as np
movies = pd.read_csv('./data/movies.csv')
ratings = pd.read_csv('./data/ratings.csv')
print...
123 post articles, 25 pages.