배열 길이 자르기

배열을 길이 단위로 자를 때 range 뒤에 인자를 생각하면 편하다.

x = [1,2,3,4,5,6]
for i in range(0,len(x),2):
	0, 2, 4 반환

#아래와 같이 자르기
words = [text[i:i+tok_len] for i in range(0, len(text), tok_len)]

순차적으로 값 비교하기

배열에서 순차적으로 앞에 값과 비교하는 로직을 쓸 때 zip 을 사용하면 더 깔끔하게 코드를 짤 수 있다.

#Before
prev = arr[0]
for v in arr[1:]:
	if prev > v :
		pass
	prev = v

#After
for v, prev in zip(arr,arr[1:]+[""]):
#index가 1부터 비교하는 거니까 0일때 위에서 미리 채워주기
	if prev > v:
		pass

For 마지막에 계산 애매할 때

마지막 처리가 애매하면 뒤에 Trash 값을 하나 넣어주자

#마지막 처리가 애매할 때는 이렇게 뒤에 값을 붙여주자
for a in (arr + [""]): 

Python List Slicing

리스트를 자를 때 인덱스 바깥 범위로 자르더라도 에러가 나지 않는다.

arr = [1,2,3,4]
arr[100:] #[]
arr[0:10] #[1,2,3,4]

운영체제 공부한 거 정리하기

프로세스가 생성될 때 PCB에 프로세스의 정보들이 저장된다. PCB는 스케쥴러에 의해 컨텍스트 스위칭이 발생할 때 RUN 상태의 프로세스를 일시적으로 저장하는 역할을 한다. 만약 해당 프로세스가 다시 CPU에게 할당받으면 CPU의 레지스터에서 PCB의 정보들은 가져온다.

컨텍스트 스위칭 과정에서 프로세스의 정보를 옮기는 과정이 들어가며 이때는 CPU가 별다른 일을 하지 않아 오버헤드가 발생하게 된다. 멀티 프로세스는 컨텍스트 스위칭이 자주 발생하나 멀티 쓰레딩은 프로세스에 비해 캐시를 비우지 않아 상대적으로 빠르게 컨텍스트 스위칭이 가능하다고 한다.