gpt4 book ai didi

python - 赋值前引用的局部变量,使用多线程

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:41 26 4
gpt4 key购买 nike

在列表中添加和删除值的代码是在不同线程中执行的操作。

在多线程中使用这些全局变量:

from threading import Thread
import time

a=[]
i = 0
j = 0

线程 1 的函数:

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 i 是全局的:

def val_in():
global i
...

def val_out():
global i
...

关于python - 赋值前引用的局部变量,使用多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30370110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com