Python 无法引用全局字典条目
我知道全局变量并不总是处理事情的最佳方式,在这种情况下,它们适合我所做的事情。我不会做大量的阅读/写作,主要是阅读Python 无法引用全局字典条目,python,dictionary,Python,Dictionary,我知道全局变量并不总是处理事情的最佳方式,在这种情况下,它们适合我所做的事情。我不会做大量的阅读/写作,主要是阅读 alive = {'subAlive': True, 'testAlive': True}; def sub_listener(conn): #listens for kill from main global alive while True: data = conn.recv() if data
alive = {'subAlive': True, 'testAlive': True};
def sub_listener(conn): #listens for kill from main
global alive
while True:
data = conn.recv()
if data == "kill":
alive['subAlive'] = False; #value for kill
break
def subprocess(conn, threadNum):
t = Thread(target=sub_listener, args=(conn,))
count = 0
threadVal = threadNum
t.start()
run = alive[subAlive];
while run:
print "Thread %d Run number = %d" % (threadVal, count)
count = count + 1
sub_parent, sub_child = Pipe()
runNum = int(raw_input("Enter a number: "))
threadNum = int(raw_input("Enter number of threads: "))
print "Starting threads"
for i in range(threadNum):
p = Process(target=subprocess, args=(sub_child, i))
p.start()
print "Starting run"
time.sleep(runNum)
print "Terminating Subprocess run"
for i in range(threadNum):
sub_parent.send("kill") #sends kill to listener
p.join()
我得到这个错误
NameError: global name 'testAlive' is not defined
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "multiprocessDemo.py", line 38, in subprocess
run = alive[subAlive];
NameError: global name 'subAlive' is not defined
我尝试了几种不同的方法来访问字典,但我似乎无法找出谷歌上的错误。如果我使用单独的变量,它确实可以工作,但不能很好地动态伸缩 在
sublive
周围加引号:
run = alive['subAlive']
在
subLive
周围加引号:
run = alive['subAlive']
好吧,这确实解决了一半的问题,现在它运行了,但在一段时间后它应该退出time@KyleSponable这真的是一个单独的问题。@JeffTratner我离开了,所以任何试图复制或使用它的人都会意识到它的局限性Swall确实修复了它的一半,现在它运行了,但进入了内部,它应该在一段时间后退出一定时期time@KyleSponable这真的是一个单独的问题。@JeffTratner我留下了这个问题,所以任何试图复制或使用它的人都会意识到它的局限性您的缩进是错误的。您确定复制的内容正确吗?缩进错误。你确定你复制的正确吗?