However, "performance of Node, PHP and Python" is a sensible goal in its own right, and I disagree with the implication of your comment, and that of sister comments, that it is not a sensible goal. There's a lot of useful code written in Node, PHP and Python, and moreover, this might remain true for a long while because "something more performance oriented" is likely to be less programmer productivity oriented in that a correct, easy to use program or library will take more time to get done. Also, Node and Python specifically can be damn fast (numpy for instance is unbeatable for large linear algebra programs, because it uses optimized libraries under the hood, etc. etc.)
And some things simply can't be done in a satisfactory fashion in anything but a dynamic language, any more than you can get Apache to run on a GPU. "Dynamic" is a feature, not just a source of overhead.
So "a performance-obsessed scripting language developer" is a perfectly fine way to describe oneself IMO.
But when writing Python modules in C, you have control over acquiring and releasing of the GIL, so before starting some long running operation, you give up the lock.
Node, AFAIK, uses several OS-level threads under the hood for disk I/O. And with PHP, a web server probably will run multiple threads for handling requests concurrently.
So the impact might not be as big as for performance-oriented code in C/C++, but it is not necessarily nil, either.
Also, in my understanding TFA applies to multiple processes just as much as multiple threads.
To clarify- languages are never by definition, single threaded. The reference implementations largely are.
Some background- in Python's case, PyPy supports STM which removes the global interpreter lock, while retaining backwards compatibility with existing code.
The answer to your question is no. All 3 are not single threaded.
But you're always going to win this argument by suggesting a lower level solution until we arrive at coding assembly optimized for a specific bare metal.