title: What happens if we create more threads than the CPU can afford? Does OS handle it? : Python - Threading
body: <p>My CPU count is 8. That means I can theoretically have 16 threads to run my multi-threaded program. I have few questions.</p>
  
  <ol>
  <li>What happens if I create 20 threads and start them at the same time? Since I cannot have that much of threads due to hardware limitations, does OS handle it or do I have to handle it from my side?</li>
  <li>Even though there are 16 theoretical threads, some threads may be already utilized by other programs. Is there a way to get the "available to utilize thread count" in Python and dynamically utilize the maximum possible thread count?</li>
  </ol>