Python 3.x 全局变量未正确定义[PYTHON 3]
获取错误信息: 文件“labpm3.py”,第37行,在child中Python 3.x 全局变量未正确定义[PYTHON 3],python-3.x,asynchronous,process,Python 3.x,Asynchronous,Process,获取错误信息: 文件“labpm3.py”,第37行,在child中 print("I'm child pid:", os.getpid(), "my next bro is:", nextS) NameError:未定义名称“nextS” 我想知道如何正确定义全局变量,提前感谢您的反馈 import os, time, sys, signal children = [] count = 0 def parent(nc, numiter): nextS = os.getppid(
print("I'm child pid:", os.getpid(), "my next bro is:", nextS)
NameError:未定义名称“nextS”
我想知道如何正确定义全局变量,提前感谢您的反馈
import os, time, sys, signal
children = []
count = 0
def parent(nc, numiter):
nextS = os.getppid()
i = 0
while i < nc:
i+= 1
newpid = os.fork()
if newpid == 0:
child(i)
else:
nextS = newpid
children.append(nextS)
i = 0
while i < numiter:
os.kill(nextS, signal.SIGALRM)
time.sleep(1)
signal.signal(signal.SIGALRM, handler_parent)
i+=1
i = 0
while i < nc:
os.kill(children[i], signal.SIGUSR1)
(pid, sts) = os.waitpid(children[i], 0)
print(pid, os.WEXITSTATUS(sts))
i+=1
def child(number):
global nextS
global count
print("I'm child pid:", os.getpid(), "my next bro is:", nextS)
signal.signal(signal.SIGALRM, handler)
signal.signal(signal.SIGUSR1, handler2)
while True:
time.sleep(10)
def handler(signum, frame):
global nextS
global count
count += 1
print("I'm child pid:", os.getpid(), "sending signal to:", nextS)
os.kill(nextsibl, signal.SIGALRM)
def handler2(signum, frame):
global nextS
global count
sys.exit(count)
def handler_parent(signum, frame):
global count
global nextS
try:
numchild = int(sys.argv[1])
numiter = int(sys.argv[2])
except:
print ('First parameter must be a number', sys.argv[1])
print ('Second parameter must be a number', sys.argv[2])
导入操作系统、时间、系统、信号
儿童=[]
计数=0
def父级(nc、numiter):
nextS=os.getppid()
i=0
而我
父级(numchild,numiter)首先,应该在方法之外定义变量。例如:
c = 0 # global variable
def add():
global c
c = c + 2 # increment by 2
print("Inside add():", c)
add()
print("In main:", c)
输出:
Inside add(): 2
In main: 2
有关更多信息,请参阅