Issue 36487: Make C-API docs clear about what the "main" interpreter is (original) (raw)
I should have added something like this earlier, but here are key points to consider covering:
- "main" interpreter is the original, created when the runtime initializes
- historically almost always the only Python interpreter in a process
- this is changing (more projects using subinterpreters, PEP 554)
- in the "python" executable, subinterpreters available via extension modules (but uncommon)
- it has extra responsiblities:
- signal handling, in main thread
- "pending calls", in main thread
- not necessarily something to publicize :)
- running in the "main" thread
- can be taken over by a sub-interpreter, but not likely
- execution during runtime initialization
- usually (always?) the active interpreter during runtime finalization
- others?
- no strong link between interpreters (e.g. main <--> sub <--> sub)
- no record of what interpreter was active (if any) when a subinterpreter was created
- no "parent" interpreter
- thread states may share thread ID
- a bunch of stuff in the C-API and in the runtime still assumes that the main interpreter is running in the current OS thread
- other stuff?
Not all of that necessarily belongs there in the docs, but a lot of it does. :)