언어/Python

파이썬 심화과정 week 1

JM Lee 2023. 4. 12. 22:04
728x90

개인과제 리뷰

 

- 깃을 제대로 사용하지 못함.(공통 문제)

 

깃에 올릴 필요 없는 파일이 많음.(requirements.text를 제대로 이용하지 못함)

commit 내용을 잘 만들 것(나중에 포트폴리오에 그대로 다 올라갈 것들입니다)

.gitignore를 잘 사용하기 위해 toptal에 출동!

 


타입별 메소드(method)(전부 다 암기해야 합니다)

 

1. 문자열 메소드

count : 문자열 내에서 특정 문자가 몇 개나 있는지 세는 메소드

find : 문자열 내에서 특정 문자열이 처음 나오는 위치를 찾아주는 메소드

        특정 문자열이 없을 경우 return -1

index: 문자열 내에서 특정 문자열이 처음 나오는 위치를 찾아주는 메소드

        없을 경우 ValueError(find와의 차이)

        try/except를 수반하는 메소드이다.

join : 특정 문자열을 기준으로 다른 문자열들을 합쳐주는 메소드

upper : 문자열 내에 모든 소문자를 대문자로 바꾸는 메소드

lower : 문자열 내에 모든 대문자를 소문자로 바꾸는 메소드

replace : 문자열 내에서 특정 문자열을 다른 문자열로 바꾸는 메소드

               replace(바뀜의 대상, 바꾸고자 하는 것)

split : 특정 문자를 기준으로 문자열을 나누는 메소드(결과는 리스트 형태로 나옴)

 

2. 리스트 메소드

len : 리스트의 길이를 반환하는 내장 함수

del : 리스트에서 특정 요소를 삭제하는 연산자

        del(삭제 대상) 

append : 리스트의 맨 뒤에 넣고 싶은 것을 첨부하는 것

sort : 리스트를 오름차순으로 정렬하는 메소드

       내림차순을 원하면 뒤에 reverse = True 작성

       sort와 sorted의 차이 : 원본값 수정 여부

insert : 리스트의 특정 위치에 요소를 삽입

          insert(위치, 투입값)

remove : 리스트에서 특정 요소 제거하는 메소드

pop : 리스트에서 n번째 요소를 빼낸 뒤, 그 요소를 삭제 or 뽑아내는 메소드

extend : 리스트를 확장하여 새로운 요소들을 추가하는 메소드

              그냥 더하기 연산자를 사용할 수 있음 (+=)

 

3. 딕셔너리 메소드

딕셔너리 : 키와 밸류를 쌍으로 저장하는 저장고

#render에 들어갈 것 : render(request, html, 딕셔너리)

 

del : 딕셔너리에서 특정 파일 삭제

keys : 딕셔너리에서 모든 key를 리스트로 만들기

values : 딕셔너리

items : 딕셔너리의 모든 키와 값을 튜플 형태의 리스트로 반환

          #튜플 : 상수화된 리스트(불변형 자료)

get : 딕셔너리에서 지정한 키에 대응하는 값을 반환(딕셔너리에 key가 없는 경우, none을 반환)

             (get 없이 함수를 할 경우 : key가 없는 경우 keyerror 발생

        >> 에러 방지를 위해 get을 쓰자)

in : 해당 키가 딕셔너리 안에 있는지 확인

       print('key' in 딕셔너리) = True or False 로 나타남

 


[이론] 프로세스와 스레드

프로세스 : "실행 중인 프로그램"

 

1. 프로세스 직접 확인하기

- foreground process : 사용자가 볼 수 있는 공간에서 실행되는 프로세스

- background process : 사용자가 볼 수 없는 공간에서 실행되는 프로세스

                                   사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스(demon or service로 지칭)

 

2. 프로세스 제어 블록

- 모든 프로세스는 실행을 위해 CPU가 필요하다. 그러나 CPU 자원은 한정되어 있다.

- 빠르게 번갈아 수행되는 프로세스들을 관리해야 함

- 이를 위해 사용하는 자료구조가 프로세스 제어 블록(이하 PCB)

- PCB에 담기는 대표적 정보 : 프로세스 ID(PID : 고유 번호), 레지스터 값, 프로세스 상태, CPU스케줄링 정보,

                                                 메모리 정보, 사용한 파일과 입출력장치 정보

 

3. 프로세스 사용자 메모리 영역 : 크게 코드 영역, 데이터 영역, 힙 영역, 스택 영역으로 나뉨

- 코드 영역 : 실행할 수 있는 코드, 기계어로 이루어진 명령어 저장

- 데이터 영역 : 프로그램이 실행되는 동안 유지할 데이터 저장(전역 변수)

- 힙 영역 : 프로그래머가 직접 할당할 수 있는 저장공간

- 스택 영역 : 데이터가 일시적으로 저장되는 공간(매개 변수, 지역 변수)

 

4. 스레드 : 프로세스의 실행 흐름으로써의 구성요소

스레드는 하나의 실행 흐름이기 때문에 하나의 문제가 생긴다고 해서 다른 스레드에 큰 지장을 주진 않음.

병렬적 실행

같은 프로세스 안에서 움직이는 여러 스레드들은 PID가 같다.

물론 다른 프로세스와 PID는 다르다.

 

동일한 프로세스 내 스레드들은 각기 다른 스레드ID, 프로그램 카운터 값을 포함한 레지스타 값과 스택을 가질 뿐

프로세스가 가지는 자원(코드, 데이터, 힙, 스택 등)을 공유한다.

그러나 프로세스끼리는 자원을 공유하지 않는다.

 

 

 


파이썬 멀티 프로세싱과 멀티 스레드(thread)

실습을 통한 결과물

 

같은 프로세스 안의 thread는 모두 TID가 다르지만 PID가 같음을 알 수 있다.