I'm using a module named spynner with python. spynner runs on a QApplication instance. I need to run functions using spynner asynchronously. 
I have tried calling these functions in different threads, using something like:
thread.start_new_thread(function_using_spynner)
This works if I run just one function, but if I try to run 2 of them I get an error saying that QApplication can not be created outside of main thread. Is there a way to run functions  asynchronously in the same thread? The functions return nothing, so just running them will be enough. 
If not, is there a workaround for creating QApplication instances outside of main thread? I don't need a display.
You could run function_using_spynner in the main thread and do whatever else you need to do in the other thread. Alternatively, you could start the QApplication in spynner in the main thread before branching into multiple threads.
QApplication in threads