Python - Cannot join thread - No multiprocessing
<p>I have this piece of code in my program. Where OnDone function is an event in a wxPython GUI. When I click the button DONE, the OnDone event fires up, which then does some functionality and starts the thread self.tstart - with target function StartEnable. This thread I want to join back using self.tStart.join(). However I am getting an error as follows: </p>

<pre><code>Exception in thread StartEnablingThread:
Traceback (most recent call last):
  File "C:\Python27\lib\threading.py", line 801, in __bootstrap_inner
    self.run()
  File "C:\Python27\lib\threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "//wagnernt.wagnerspraytech.com/users$/kundemj/windows/my documents/Production GUI/Trial python Codes/GUI_withClass.py", line 638, in StartEnable
    self.tStart.join()
  File "C:\Python27\lib\threading.py", line 931, in join
    raise RuntimeError("cannot join current thread")
RuntimeError: cannot join current thread
</code></pre>

<p>I have not got this type of error before. Could any one of you guys tell me what I am missing here. </p>

<pre><code>    def OnDone(self, event):
        self.WriteToController([0x04],'GuiMsgIn')
        self.status_text.SetLabel('PRESSURE CALIBRATION DONE \n DUMP PRESSURE')
        self.led1.SetBackgroundColour('GREY')
        self.add_pressure.Disable()
        self.tStart = threading.Thread(target=self.StartEnable, name = "StartEnablingThread", args=())
        self.tStart.start()

    def StartEnable(self):
        while True:
            time.sleep(0.5)
            if int(self.pressure_text_control.GetValue()) &lt; 50:
                print "HELLO"
                self.start.Enable()
                self.tStart.join()
                print "hello2"
                break
</code></pre>

<p>I want to join the thread after the "if" condition has executed. Until them I want the thread to run. </p>

<p>When the <code>StartEnable</code> method is executing, it is running on the <em>StartEnablingThread</em> you created in the <code>__init__</code> method. You cannot join the current thread. This is clearly stated in the documentation for the <a href="https://docs.python.org/2/library/threading.html#threading.Thread.join" rel="nofollow">join</a> call.</p>

<blockquote>
  <p>join() raises a RuntimeError if an attempt is made to join the current thread as that would cause a deadlock. It is also an error to join() a thread before it has been started and attempts to do so raises the same exception.</p>
</blockquote>

python multithreading wxpython