title: Are locks unnecessary in multi-threaded Python code because of the GIL?
body: <p>If you are relying on an implementation of Python that has a Global Interpreter Lock (i.e. CPython) and writing multithreaded code, do you really need locks at all?</p>
  
  <p>If the GIL doesn't allow multiple instructions to be executed in parallel, wouldn't shared data be unnecessary to protect?</p>
  
  <p>sorry if this is a dumb question, but it is something I have always wondered about Python on multi-processor/core machines.  </p>
  
  <p>same thing would apply to any other language implementation that has a GIL.</p>