You are correct in that run() does not spawn a separate thread. It runs the thread function in the context of the current thread.
It is not clear to me what you are trying to achieve by calling start() in a loop.
- If you want your thread to repeatedly do something, then move the loop into the thread function.
- If you want multiple threads, then create multiple
Threadobjects (and callstart()once on each of them).
Finally, to pass arguments to a thread, pass args and kwargs to the Thread constructor.