from PyQt4 import QtGui, QtCore import multiprocessing as mp def initChildProcess(): app = QtGui.QApplication.instance() if app is not None: print "QApp already exists in child process." else: app = QtGui.QApplication([]) win = QtGui.QMainWindow() win.setWindowTitle("Child Process") win.show() app.exec_() def newProcess(): proc = mp.Process(target=initChildProcess) proc.start() return proc if __name__ == '__main__': ## This works as expected: #proc = newProcess() #app = QtGui.QApplication([]) ## This causes crash: app = QtGui.QApplication([]) proc = newProcess() win = QtGui.QMainWindow() win.setWindowTitle("Main Process") win.show() app.exec_()