The python thread module does provide concurrency, however the Python GIL (Global Interpreter Lock) prevents the threads from running in parallel as each thread has to wait for the GIL to be released ...
And compare the result (time executed). A non-scientific experiment I ran on my computer. And yes, I know 2 version of CPython and PyPy is not the same. I will do it agan when have time. pypy3 ...