title: is Celery Task initialized per each worker process, or once per app?
body: <p>I have a heavy external library class which takes time to initialize and consumes a lot of memory. I want to create it once per task instance, at minimum. </p>
  
  <pre><code>class NlpTask(Task):
      def __init__(self):
          print('initializing NLP parser')
          self._parser = nlplib.Parser()
          print('done initializing NLP parser')
  
      @property
      def parser(self):
          return self._parser
  
  @celery.task(base=NlpTask)
  def my_task(arg):
      x = my_task.parser.process(arg)
      # etc.
  </code></pre>
  
  <p>Celery starts 32 worker processes, so I'd expect the printing <code>"initializing ... done"</code> 32 times, as I assume that a task instance is created per each worker. Surprisingly, I'm getting the printing <em>once</em>. What actually happens there? Thanks. </p>