python – 使用多线程在赋值之前引用的局部变量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 使用多线程在赋值之前引用的局部变量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1209字,纯文字阅读大概需要2分钟。
内容图文
![python – 使用多线程在赋值之前引用的局部变量](/upload/InfoBanner/zyjiaocheng/745/25a15872be07464eb34c9859fad579cd.jpg)
用于添加和删除列表中的值的代码是在不同线程中执行的操作.
在多线程中使用这些全局变量:
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
...
内容总结
以上是互联网集市为您收集整理的python – 使用多线程在赋值之前引用的局部变量全部内容,希望文章能够帮你解决python – 使用多线程在赋值之前引用的局部变量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。