:)
我正在玩多重处理,Qt。我想创建一个全局的变量,当我关闭窗口时,在函数中使用它来杀死后台进程。
import sys, multiprocessing, time
def proc():
while True:
print "Runinn'..."
time.sleep(1)
return
def onExit():
p.terminate()
QtCore.QCoreApplication.instance().quit
return
.
.
.
button.clicked.connect(onExit())
.
.
.
global p=multiprocessing.Process(target=proc())
p.start()
解释器抛出错误,
global p=multiprocessing.Process(target=proc())
^
SyntaxError: invalid syntax
答案 0 :(得分:5)
global
仅将名称放入当前函数的全局范围。作业必须单独进行。
答案 1 :(得分:2)
这不是您使用global
的方式。
首先,代码结构应该是这样的:
global p
p=multiprocessing.Process(target=proc())
p.start()
注意如何在一行上声明一个名称为全局的名称,然后将其分配给全局语句下面的另一个名称。
其次,你只能在内部 重新分配 p
。在外部或在不重新分配p
的功能中执行此操作不会产生任何效果。
最后,您需要在调用p
之前定义onExit
。再一次,由于onExit
不会重新分配p
,特别是因为p
已经是全球性的,所以您不需要执行global p
。