python – 使用多线程在赋值之前引用的局部变量
发布时间:2020-12-20 11:43:06 所属栏目:Python 来源:网络整理
导读:用于添加和删除列表中的值的代码是在不同线程中执行的操作. 在多线程中使用这些全局变量: from threading import Threadimport timea=[]i = 0j = 0 thread1的函数: def val_in(): while 1: a.append(raw_input()) print "%s value at %d: %d added" % ( ti
|
用于添加和删除列表中的值的代码是在不同线程中执行的操作.
在多线程中使用这些全局变量: from threading import Thread import time a=[] i = 0 j = 0 thread1的函数: def val_in():
while 1:
a.append(raw_input())
print "%s value at %d: %d added" % ( time.ctime(time.time()),i,int(a[i])) // line 14
i+=1
线程2的功能: def val_out():
while 1:
time.sleep(5)
try:
print "%s value at %d: %d deleted" % (time.ctime(time.time()),j,int(a.pop(j)))
i-=1
except:
print"no values lefts"
time.sleep(2)
定义和启动线程: t = Thread(target = val_in) t1 = Thread(target= val_out) t.start() t1.start() 现在当输入为1时,它应该被添加到列表a中,但是有一个错误: Error: Exception in thread Thread-1: Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py",line 810,in __bootstrap_inner self.run() File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py",line 763,in run self.__target(*self.__args,**self.__kwargs) File "/Users/dhiraj.agarwal/Documents/workspace/try3/multithread.py",line 14,in val_in UnboundLocalError: local variable 'i' referenced before assignment 解决方法
你应该告诉python我是全局的:
def val_in():
global i
...
def val_out():
global i
...
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
