loop.run_in_executor()loop.run_until_complete()asyncio.run_coroutine_threadsafeasyncio.new_event_loop()
소켓 서버를 시작합니다.반환 값인 server은 코루틴 인스턴스 입니다.새 클라이언트 연결이 만들어질 때마다 client_connected_cb 콜백이 호출됩니다. 이 콜백은 두 개의 인자로 (reader, writer) 쌍을 받는데, StreamReader 와 Str
한줄요약: 1개의 주방 / 1개의 chef / 10개의 해야할 요리시스템 콜(블록킹 I/O와 스레드 시작도 포함해)을 코루틴으로 만들면, 프로그램의 응답성이 좋아지고 사용자가 느끼는 지연 시간을 줄일 수 있다.asyncio는 multiple servers와 연결된 se
executor = \_\_PoolExecutor()"worker 스레드/프로세스를 관리하는 풀" + "작업을 분배하는 큐" + "결과를 수집하는 큐"를 관리합니다.ProcessPoolExecutor(max_workers=None, mp_context=None, ini
p = mp.Process(target=None, name=None, args=(), kwargs={}, \*, daemon=None)daemon 인자는 프로세스 daemon 플래그를 True 또는 False 로 설정합니다. None (기본값) 이면, 이 플래그는 만드
Thread: 단일 실행 스레드를 만드는 객체Lock: 기본적인 Lock 객체RLock: 재진입 가능한 락객체. 이미 획득한 락을 다시 획득할 수 있다.Condition: 다른 스레드에서 신호를 줄 때까지 기다릴 수 있는 컨디션 변수 객체Event: 컨디션 변수의 일반
C를 사용하면 좀 더 하부 기계에 가깝게 실행되므로 파이썬보다 더 빠르게 실행되고, 경우에 따라 더 이상 병렬화가 필요하지 않을 수도 있다.또한 C 확장은 파이썬 인터프리터와 무관하게 작동하기 때문에 GIL을 신경쓰지 않아도 된다.파이썬이 제공하는 C확장 API는 문서
코드 레벨은 다른 문서에서 작성합니다.한줄요약: 1개의 주방 / 10개의 요리사 / 10개 해야할 요리blocking I/O 를 해결할 때 사용한다.CPU를 적게 쓰고, I/O waiting 이 많은 테스크에 적합코드를 가급적 손보지 않고 블로킹 I/O를 병렬로 실행하
fan out: 각 작업 단위에 대해, 동시 실행되는 여러 실행흐름을 만들어 내는 것fan in: 전체를 조율하는 프로세스 안에서, 다음 단계로 진행하기 전에 동시 작업 단위의 작업이 모두 끝날 때까지 기다리는 과정특징parallelconcurrent장점서로 격리되고
process 운영체제로부터 시스템 자원을 할당 받는 자원의 단위 시스템 자원의 예 > - CPU 시간 > - 파일 > - 입출력 장치 > - 주소 공간 > 독립된 메모리 영역 프로세스가 OS로부터 할당받는 대표적 메모리 공간 4가지 > > - 데이터 영역 glo
윈도우즈 및 리눅스/유닉스에서 사용되는 다른 프로세스 생성 방식 중 하나파이썬의 multiprocessing 모듈에서 사용되는 기본 프로세스 생성 방식 중 하나spawn은 새로운 프로세스를 만들 때,부모 프로세스의 메모리와 상태를 복제하지 않고 새로운 프로세스를 만드는
Python의 multiprocessing 모듈은 프로세스 간 통신(IPC, Inter-Process Communication)을 위해 다양한 메커니즘을 제공합니다. 여기에는 SharedMemory, Pipe, Queue, 그리고 Manager가 포함되어 있으며, 각각
한줄 요약IPC는 데이터의 직렬화/역직렬화, 컨텍스트 스위칭, 데이터 복사 등이 필요해서, 더 느립니다.메모리 공유: 하나의 프로세스 내의 스레드들은 같은 메모리 공간을 공유합니다. 따라서 스레드 간의 데이터 교환은 메모리를 직접 읽고 쓰는 것으로 간단오버헤드 최소화:
컨텍스트 스위칭은 컴퓨터에서 여러 작업을 동시에 처리하는 방식의 일부로, CPU가 한 작업에서 다른 작업으로 전환하는 과정이 과정에서, CPU는 현재 진행 중인 작업의 상태(컨텍스트)를 저장하고, 다음 작업의 상태를 불러와서 계속 작업할 수 있도록 함이를 학교에서 선생
기본적으로, 파이썬 프로세스 자체가 하나의 CPU 코어만 사용하도록 제한되어 있는 것은 아닙니다. 프로세스가 사용하는 CPU 코어의 수는 파이썬의 실행 모델과 프로그램이 사용하는 라이브러리에 따라 달라질 수 있습니다.CPython, 파이썬의 표준 구현에서는 Global
파이썬에서 하나의 프로세스가 사용할 수 있는 CPU 코어 수를 제한하는 방법에는 여러 가지가 있습니다. 가장 일반적인 방법 중 하나는 운영체제의 기능을 활용하는 것입니다. Linux와 같은 Unix 기반 시스템에서는 taskset 명령어를 사용하거나, 파이썬 내부에서
장점:효율성: NumPy는 내부적으로 최적화된 C/C++ 라이브러리를 사용하기 때문에, 고성능의 수치 계산이 가능 이러한 라이브러리들은 자동으로 멀티코어를 활용하여 연산을 병렬로 처리관리 용이성: 메모리 공간을 공유하므로, 데이터 교환에 대한 오버헤드가 적음단점:자동
multiprocessing.Event는 Python의 multiprocessing 모듈에서 제공하는 동기화 프리미티븹 중 하나로, 프로세스 간에 이벤트를 통해 신호를 보낼 수 있게 해줍니다. 이를 통해 여러 프로세스가 특정 이벤트의 발생을 기다리고, 이벤트가 발생하면
데몬 프로세스(Daemon Process)는 주로 백그라운드에서 실행되는 프로세스로, 주 프로세스와는 독립적으로 작동합니다.백그라운드 실행: 데몬 프로세스는 사용자 인터페이스 없이 백그라운드에서 실행되며, 주로 서비스나 다른 프로세스를 지원하는 역할을 합니다.주 프로세
언제? 왜? 쓰는가?중앙 집중식: 공유 객체의 단일 인스턴스는 별도의 서버 프로세스에서 유지됩니다.프로세스 안전: 프록시 개체는 경쟁 조건을 피하기 위해, 중앙 집중화된 개체에 대한 액세스가 프로세스 안전한지 확인합니다.프록시 객체: 실제 객체를 대신하여 작업을 수행하
이미지와 같은 큰 arrays를 공유할 때 좋음.pickling이 필요하지 않기 때문에 오버헤드가 가장 적기 때문메모리를 직접 공유하기 때문에 데이터 복사 과정이 없음네트워크를 통해 다른 머신들과 array를 공유할 때에는 작동하지 않는다. 이럴 때는 redis나 다른
캐시, 버퍼, 그리고 RAM은 모두 컴퓨터에서 데이터를 임시로 저장하는 메모리 형태들이지만, 그 용도와 특성에서 차이가 있습니다.정의 및 용도: RAM은 현재 실행 중인 프로그램과 그 프로그램이 사용하는 데이터를 저장이는 컴퓨터가 빠르게 접근해야 하는 정보를 유지하기
프로세스(Process):프로그램이 실행 중인 상태를 말합니다.각 프로세스는 독립적인 메모리 공간을 가지고 있음운영체제는 각 프로세스에 고유한 주소 공간을 할당스레드(Thread):스레드는 프로세스 내에서 실행되는 작은 단위여러 스레드가 하나의 프로세스 내에서 실행될