title: Why does pint need a unit registry?
body: <p>The default example for pint is</p>
  
  <pre><code>&gt;&gt;&gt; import pint
  &gt;&gt;&gt; ureg = pint.UnitRegistry()
  &gt;&gt;&gt; 3 * ureg.meter + 4 * ureg.cm
  &lt;Quantity(3.04, 'meter')&gt;
  </code></pre>
  
  <p>which makes me wonder what I need the unit registry object for. For example, I could imagine it to be just a submodule:</p>
  
  <pre><code>&gt;&gt;&gt; from pint import ureg
  &gt;&gt;&gt; 3 * ureg.meter + 4 * ureg.cm
  &lt;Quantity(3.04, 'meter')&gt;
  </code></pre>
  
  <p>What is the advantage of ureg being an object instead of a submodule?</p>
  
  <p><strong>Do I have to share this ureg object or can I simply create a new one when I make multiple calls in different functions?</strong> Or is it possibly a singleton, so it doesn't matter as there will always just be one?</p>