title: Python multithreading and Global Interpreter Lock
body: <p>I recently came across the GIL present in Python according to which only a single thread can execute at a time and multithreading can not utilize all the cores.</p>
  
  <p>Now in one of my projects, I used  multithreading and lots of locks and semaphores
  So here my question is can I achieve the same thing if I don't use locks and semaphores? i.e if I remove the concurrency logics from my project.</p>
  
  <p>Edit: What I want to know is, whether it's possible to attain same functionality if I remove concurrency logics, I know what is GIL and it prevents threads to use all the cores and only one thread is run at a time.</p>