title: Multiprocessing causes Python to crash and gives an error may have been in progress in another thread when fork() was called
body: <p>I am relatively new to Python and trying to implement a Multiprocessing module for my for loop.</p>
  
  <p>I have an array of Image url's stored in img_urls which I need to download and apply some Google vision.</p>
  
  <pre><code>if __name__ == '__main__':
  
      img_urls = [ALL_MY_Image_URLS]
      runAll(img_urls)
      print("--- %s seconds ---" % (time.time() - start_time)) 
  </code></pre>
  
  <p>This is my runAll() method</p>
  
  <pre><code>def runAll(img_urls):
      num_cores = multiprocessing.cpu_count()
  
      print("Image URLS  {}",len(img_urls))
      if len(img_urls) &gt; 2:
          numberOfImages = 0
      else:
          numberOfImages = 1
  
      start_timeProcess = time.time()
  
      pool = multiprocessing.Pool()
      pool.map(annotate,img_urls)
      end_timeProcess = time.time()
      print('\n Time to complete ', end_timeProcess-start_timeProcess)
  
      print(full_matching_pages)
  
  
  def annotate(img_path):
      file =  requests.get(img_path).content
      print("file is",file)
      """Returns web annotations given the path to an image."""
      print('Process Working under ',os.getpid())
      image = types.Image(content=file)
      web_detection = vision_client.web_detection(image=image).web_detection
      report(web_detection)
  </code></pre>
  
  <p>I am getting this as the warning when I run it and python crashes</p>
  
  <pre><code>objc[67570]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called.
  objc[67570]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
  objc[67567]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called.
  objc[67567]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
  objc[67568]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called.
  objc[67568]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
  objc[67569]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called.
  objc[67569]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
  objc[67571]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called.
  objc[67571]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
  objc[67572]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called.
  objc[67572]: +[__NSPlaceholderDate initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
  </code></pre>