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 ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |