【发布时间】:2014-06-11 23:47:07
【问题描述】:
所有,
在我的 GUI 中,我使用多处理来运行一个函数。但池启动多个GUI。
我读过人们在他们的代码中添加if __name__ == '__main__': 并且它似乎有效。
但我不知道这个技巧是否适用于我的情况,以及我必须在哪里插入这段代码。
函数 run_func() 由 GUI 中的按钮启动。
我怎样才能阻止这个多次启动?
我还有第二个问题: 如何在执行结束时取消导入设置?
非常感谢!
@pyqtSlot()
def run_func():
run="""
import os
import sys
from setup import *
print('toto')
print('titi')
"""
from multiprocessing import Pool
pool = Pool(processes=4)
asyncResult = pool.apply_async(exec(run),{},{}),range(1)
【问题讨论】:
-
您的 GUI 是否在 setup.py 中启动?启动它不受
if __name__ == "__main__":保护吗?另外,你为什么不直接创建一个常规函数并调用apply_async呢?以你现在的方式使用exec是不对的。 -
谢谢达诺。我的 GUI 没有在 setup.py 中启动。我有一个 Main,它启动一个 QApplication,它启动我的 QMainWindow。然后我的 QMainWindow 通过 QAction 启动 run_func()。我可以直接在 apply_async 中启动一个函数,你是对的,但它不能解决多重启动。
标签: python user-interface import pyqt multiprocessing