일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- tool_calls
- 강화학습
- LangChain
- conditional_edges
- 밑바닥부터시작하는딥러닝 #딥러닝 #머신러닝 #신경망
- human-in-the-loop
- 강화학습의 수학적 기초와 알고리듬의 이해
- 추천시스템
- rl
- lcel
- update_state
- 밑바닥부터 시작하는 딥러닝
- Python
- add_subgraph
- pinecone
- tool_binding
- Ai
- rag
- REACT
- 강화학습의 수학적 기초와 알고리듬 이해
- RecSys
- subgraph
- removemessage
- toolnode
- langgraph
- langgrpah
- conditional_edge
- summarize_chat_history
- chat_history
- humannode
- Today
- Total
타임트리
[Python] 프로그램, 프로세스와 스레드 본문
프로그램의 사전적 정의는 어떤 문제를 해결하기 위해 컴퓨터에게 주어지는 처리 방법과 순서를 기술한 일련의 명령문의 집합체이다. 즉, 간단히 말해 개발자가 작성한 코드들을 의미한다.이러한 프로그램은 보조메모리(HDD, SDD)와 같은 저장장치에 보관되고 있다가 사용자가 실행하면 해당 프로그램 코드들이 주메모리(RAM)에 적재되어 작업이 진행된다. 이때 프로그램이 RAM에 올라온 상태가 되면 이를 프로세스(process) 라고 한다.
프로그램: 명령문이 저장장치에 저장된 정적인 상태
프로세스: 실행을 위해 프로그램이 RAM에 올라온 동적인 상태
이처럼 프로그램을 실행하여 프로세스가 생성되면, CPU는 프로세스가 해야할 작업을 수행한다. 이때, CPU가 처리하는 프로세스의 작업 단위를 스레드(thread) 라고 한다.
프로세스가 처리해야 할 작업의 단위가 하나라면 싱글 스레드, 여러 개라면 멀티 스레드라고 한다. 정리하면, 스레드는 프로세스 내에서 실행되는 여러 작업의 단위를 말한다.
스레드가 한 개로 동작하면 싱글 스레드, 여러 개의 스레드가 동작하면 멀티 스레딩이라고 한다. 이때, 멀티 스레딩에서 스레드는 다수의 스레드 간 메모리를 공유하거나 통신이 가능하다. 예를 들어 사람의 팔을 스레드라고 생각해보자. 한 사람은 2개의 스레드를 가지고 있고 각 스레드는 뇌를 통해 메모리를 공유하고 통신할 수 있다.
이처럼 멀티 스레드를 사용했을 때 장점과 단점은 다음과 같다.
- 장점: 자원의 낭비를 막고 효율성을 향상
- 단점: 한 스레드에 문제가 생기면 전체 프로세스에 영향을 미침
---
참고: 인프런(파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI))
'Today I Learned > 동시성 프로그래밍' 카테고리의 다른 글
[Python] Multi-Threading, Multi-Processing, GIL (0) | 2024.05.26 |
---|---|
[Python] 동시성(concurrency)와 병렬성(parallelism) (0) | 2024.05.26 |
[Python] 파이썬 코루틴 (0) | 2024.05.26 |
[Python] 동기와 비동기 (0) | 2024.05.26 |
[Python] 바운드와 블로킹 (0) | 2024.05.26 |