I discovered this while working with a Raspberry Pi 3, as the current implementation of Thread exhausts much faster on it than compared to, say, an x86 server with 16G of RAM.
Consider the following:
The sleep(2) is designed to space thread creation out to such that only one thread is running at a time. On a Raspberry Pi 3 this code makes it this far:
After this subsequent calls to thread.start() return silently given that Thread.start() has no return value:
An x86 server equivalent suffers the same fate but in hours rather than minutes.