title: multiprocessing show matplotlib plot
body: <p>I'm trying to open up multiple plots but I ran into a few problems. When I tried to create plots using threading, python would first open a number of windows, then close all but the first.</p>
  
  <p>In another question it was recommended that I use multiprocessing which I have tried. The code runs without error, it just doesn't show any plot.<br>
  I'm trying to get something very simple to work before moving on to my main project.</p>
  
  <pre><code># Import the necessary packages and modules
  import matplotlib.pyplot as plt
  import numpy as np
  
  
  #from threading import Thread
  import multiprocessing
  
  def plot(datax, datay, name):
      # Prepare the data
      x = datax
      y = datay**2
      # Plot the data
      plt.scatter(x, y, label=name)
  
      # Add a legend
      plt.legend()
  
      # Show the plot
      plt.show()
  
  
  
  #plot(3,3,)
  '''
  for i in range(10):
      t = Thread(target=plot, args=(i,i+1,i,))
      t.start()
      '''
  for i in range(2):
      p = multiprocessing.Process(target=plot, args=(i, i, i))
      p.start()
  </code></pre>
  
  <p>update:
  for some reason, multiprocessing stopped working again. I tried creating a function multiP() only to open the processes but it didn't work when I added the input('value: '). scine I can't figure out how to send data to a specific thread I'm going to save data like this: dat = [[x,y0,y1,...yn],[x,y0,y1,...yn],...] and each plot process with check the if something was added to dat.</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>import matplotlib.pyplot as plt
  import numpy as np
  
  import multiprocessing
  #multiprocessing.freeze_support() # &lt;- may be required on windows
  
  def plot(datax, datay, name):
      x = datax
      y = datay**2
      plt.scatter(x, y, label=name)
      plt.legend()
      plt.show()
  
  def multiP():
      if __name__ == "__main__":   
          for i in range(2):
              p = multiprocessing.Process(target=plot, args=(i, i, i))
              p.start()
  if True:
      #input('Vlaue: ') # while commented plots are shown
      multiP()</code></pre>
  </div>
  </div>
  </p>