在改写cookiemonster时遇到了此问题,暂时通过将browser模块抽出来成为单独的py然后传参数execl解决,但仍不清楚为何Process中QApplication退出后开启新的event loop不可行
from PyQt4.QtCore import * from PyQt4.QtGui import * from multiprocessing import Queue, Pipe, Process import time def test(): print QApplication.instance() QApplication.quit() app = QApplication(sys.argv) win = QMainWindow() win.show() time.sleep(4) print app app.exec_() def gao(): p = Process(target=test,args=()) p.start() if __name__ == "__main__": app = QApplication(sys.argv) print app win = QMainWindow() win.show() QTimer.singleShot(2000,gao) app.exec_() print "quit"
这个运行的结果期待的是出现两个窗口,但实际上只出现一个窗口,输出
<PyQt4.QtGui.QApplication object at 0xac44a2c>
<PyQt4.QtGui.QApplication object at 0xac44a2c>
<PyQt4.QtGui.QApplication object at 0xac44bec>
QCoreApplication::exec: The event loop is already running
理论来说QApplication调用quit之后会结束当前运行的event loop,但实际上在这个例子中没有退出。而且父进程的event loop为何会影响子进程?还不明白,尚待研究
FROM :https://blog.flanker017.me/ | Author:Flanker
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论