Closed
Description
Feature or enhancement
Proposal:
While we wait on PEP 734, there's nothing blocking us from adding a new executor for multiple interpreters. Doing so would allow people to start trying them out. (I wish I had thought of this for 3.13!)
My planned design:
- mostly built on top of
ThreadPoolExecutor
- callables (and args) passed as initializer or to
submit()
ormap()
will be pickled (same asProcessPoolExecutor
) - initializer and
submit()
arg can be a script instead of a callable (a script formap()
doesn't make sense since there are no args) __init__()
will take a new "shared" arg that corresponds to whatInterpreter.prepare_main()
takes in PEP 734, to allow each worker interpreter to share some data
In the future we could support a more efficient "sharing" scheme than pickle. When (or if) PEP 734 is accepted, we can refactor the executor to use the interpreters
module rather than using _interpreters
directly.
Open questions:
- reconstitute and raise uncaught exceptions from running in the interpreter (like we do for
ProcessPoolExecutor
)? - (optionally?) exec functions against main instead of the their original module, i.e. use the body of the function as a script?
Has this already been discussed elsewhere?
This is a minor feature, which does not need previous discussion elsewhere
Links to previous discussion of this feature:
No response
Linked PRs
Metadata
Metadata
Assignees
Labels
bugs and security fixesbugs and security fixesPython modules in the Lib dirPython modules in the Lib dirA feature request or enhancementA feature request or enhancement
Projects
Status
Done