title: Understanding the difference between vectorizing in Numpy and multi-threading of vectorized expression via Numexpr
body: <p>I am struggling a little bit with the concept that NumPy is said to be vectorizing its arithmetic array operations: Does it overcome Python's GIL since part of NumPy is implemented in C? Also, how does Numexpr work then? If I understand correctly, it runs code through an optimizing JIT and enables multi-threading and thereby overcomes Python's GIL.</p>
  
  <p>And isn't "true" vectorization more like multi-processesing instead of multithreading?</p>