title: How to send a signal to the main thread in python without using join?
body: <p>I Am trying to send a signal from a child thread to the main thread in a multi-threaded program (cannot use multi-processes). Unfortunately even after exhausting all the reading materials available online (which I could find), I Am unable to get a clear idea of how to do so. I Am a beginner to signals AND to python so please bear with me and explain as you would to a novice.
  I cannot use the join method in the process, since I want both the threads to be running simultaneously.
  Here is the code that I found related to the topic here - <a href="http://pymotw.com/2/signal/#signals-and-threads" rel="noreferrer">http://pymotw.com/2/signal/#signals-and-threads</a>
  and it doesn't really work for me.</p>
  
  <pre><code>import signal
  import threading
  import os
  import time
  
  def signal_handler(num, stack):
      print 'Received signal %d in %s' % (num, threading.currentThread())
  
  signal.signal(signal.SIGUSR1, signal_handler)
  
  def wait_for_signal():
      print 'Waiting for signal in', threading.currentThread()
      signal.pause()
      print 'Done waiting'
  
  # Start a thread that will not receive the signal
  receiver = threading.Thread(target=wait_for_signal, name='receiver')
  receiver.start()
  time.sleep(0.1)
  
  def send_signal():
      print 'Sending signal in', threading.currentThread()
      os.kill(os.getpid(), signal.SIGUSR1)
  
  sender = threading.Thread(target=send_signal, name='sender')
  sender.start()
  sender.join()
  
  # Wait for the thread to see the signal (not going to happen!)
  print 'Waiting for', receiver
  signal.alarm(2)
  receiver.join()
  </code></pre>
  
  <p>Please explain with a multi-threaded example if possible.
  Thanks in advance!</p>