스택리스 파이썬
Stackless Python| 원저작자 | 크리스티안 티스머 |
|---|---|
| 개발자 | 안셀름 크루이스 |
| 초기 릴리즈 | 전( |
| 안정된 릴리스 | 3.8.1-slp[1] / 2020년 1월 , 전( |
| 프리뷰 릴리즈 | 2021년 8월 ; 전 () |
| 저장소 | |
| 기입처 | C, Python |
| 운영 체제 | Linux, Windows |
| 유형 | 통역사 |
| 면허증. | Python 소프트웨어 Foundation 라이센스 |
| 웹 사이트 | http://www.stackless.com |
Stackless Python 또는 Stackless는 Python 프로그래밍 언어 인터프리터이므로 자체 스택에 대한 C 콜 스택에 의존하지 않기 때문에 이름이 붙여졌습니다.실제로 스택리스 Python은 C 스택을 사용하지만 함수 [2]호출 사이에 스택이 지워집니다.스택리스에서 가장 중요한 기능은 마이크로스레드입니다.이러한 기능은 통상적인 운영체제 스레드와 관련된 오버헤드를 대부분 회피합니다.Python 기능 외에도 Stackless는 Coroutine, 통신 채널 및 작업 일련화에 대한 지원을 추가합니다.
설계.
Stackless Python을 사용하면 실행 중인 프로그램은 운영체제 커널이 아닌 언어 인터프리터에 의해 관리되는 마이크로스레드로 분할됩니다. 컨텍스트 전환 및 작업 스케줄링은 순전히 인터프리터에서 수행됩니다(따라서 녹색 스레드의 한 형태로도 간주됩니다).마이크로스레드는 동일한 CPU 코어의 프로그램에서 서로 다른 하위 태스크의 실행을 관리합니다.따라서 이들은 이벤트 기반 비동기 프로그래밍의 대체 수단이며 싱글코어 프로그램에 개별 스레드를 사용하는 오버헤드를 회피합니다(사용자 모드와 커널 모드 간에 모드 전환이 필요 없기 때문에 CPU 사용률을 줄일 수 있습니다).
마이크로스레드를 사용하면 단일 코어로 실행되는 하위 태스크를 쉽게 처리할 수 있지만 Stackless Python은 CPython의 Global Interpreter Lock을 제거하지 않으며 여러 스레드 및/또는 프로세스를 사용하지 않습니다.따라서 병렬 처리가 아닌 공유 CPU 상의 공동 멀티태스킹만 허용됩니다(프리엠프션은 원래 사용할 수 없었지만 현재 어떤[3] 형태로든 사용 가능).여러 CPU 코어를 사용하려면 스택리스 Python 프로세스 위에 프로세스 간 통신 시스템을 구축해야 합니다.
소스의 많은 변경으로 인해 Stackless Python은 기존 Python 설치에서 확장 또는 라이브러리로 설치할 수 없습니다.대신 그 자체로 완전한 Python 배포입니다.스택리스 기능의 대부분은 Python 인터프리터 및 JIT [4]컴파일러인 PyPy에도 구현되어 있습니다.
사용하다
스택리스 전체가 별개의 디스트리뷰션이지만 스위칭 기능은 [5]greenlet이라고 불리는 CPython 확장으로 정상적으로 패키지화되어 있습니다.많은 라이브러리(예[6]: Gevent)에서 CPython에 대한 녹색 스레드 솔루션을 제공하기 위해 사용됩니다.Python은 이후 녹색 스레드용 네이티브 솔루션인 wait/async를 제공받고 있습니다.
스택리스(Stackless)는 IronPort의 메일 플랫폼뿐만 아니라 이브 온라인 대규모 멀티플레이어 온라인 게임 구현에도 광범위하게 사용됩니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "Release v3.8.1-slp". 12 August 2021. Retrieved 8 March 2022.
- ^ Ghostarchive 및 Wayback Machine에서 아카이브:
- ^ "About Stackless". Retrieved 26 August 2016.
a round robin scheduler is built in. It can be used to schedule tasklets either cooperatively or preemptively.
- ^ "Application-level Stackless features — PyPy documentation". pypy.readthedocs.org.
- ^ "greenlet: Lightweight concurrent programming — greenlet 0.4.0 documentation". greenlet.readthedocs.org.
- ^ "What is gevent? — gevent 1.3.0.dev0 documentation". www.gevent.org.
