Tcl has also fully supported this use case since about 1998.
Guile does this with bravura.
This avoids the Global Interpreter Lock problem that plagues Python. How does Guile handle that?
If you don't cross the C barrier again from your scheme code you can even use something like guile-fibers for Concurrent ML-like parallelism.