self.m_webpage_lock = thread.allocate_lock() Some lines later: ## Load webpage def LoadPage(self, webpage): print "LoadPage1" page,webpage = self.RetrievePage(webpage) if not page: return ## The base URL self.m_MainUrl = webpage bla = page.read() headers = page.info() mime = headers.getheader('Content-type').split(';')[0] print mime global returnvalue self.m_webpage_lock.acquire() self.m_WebDocument.clear() if mime: returnvalue = self.m_WebDocument.open_stream(mime) else: returnvalue = self.m_WebDocument.open_stream("text/plain") if not returnvalue: self.m_WebDocument.open_stream("text/html") self.m_WebDocument.write_stream("Error loading page " + webpage + ". Please go back!") self.m_WebDocument.close_stream() return self.m_WebDocument.write_stream(bla) self.m_WebDocument.close_stream() self.m_webpage_lock.release() print "LoadPage2" I call that function with: thread.start_new_thread(self.LoadPage, (self.m_BackPages[-1],)) But in my console, it doesn't print the text LoadPage1(nor does it print LoadPage2).