全局变量无效语法与多处理

时间:2013-11-27 21:31:20

标签: python multiprocessing

:)

我正在玩多重处理,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

2 个答案:

答案 0 :(得分:5)

global仅将名称放入当前函数的全局范围。作业必须单独进行。

答案 1 :(得分:2)

这不是您使用global的方式。

首先,代码结构应该是这样的:

global p
p=multiprocessing.Process(target=proc())
p.start()

注意如何在一行上声明一个名称为全局的名称,然后将其分配给全局语句下面的另一个名称。

其次,你只能在内部 重新分配 p。在外部或在不重新分配p的功能中执行此操作不会产生任何效果。

最后,您需要在调用p之前定义onExit 。再一次,由于onExit不会重新分配p,特别是因为p已经是全球性的,所以您不需要执行global p