我编写了以下代码(简化)将对象添加到一个最初为空的列表(listofeelements,这是一个全局变量)。然而,当我最后打印这个列表时,它仍然是空的。我做错了什么?你知道吗
import threading
def addElement(listOfElements):
for k in range(10):
listOfElements.append(k)
listOfElements = []
import threading
def addElement(listOfElements,otherList):
for k in range(10):
listOfElements.append(k)
listOfElements = []
threadsElts = []
for i in range(10):
threadsElts.append(threading.Thread(target=addElement,args=(listOfElements,otherList)))
for t in threadsElts:
t.start()
for t in threadsElts:
t.join()
threadsElts = []
for i in range(10):
threadsElts.append(threading.Thread(target=addElement,args=(listOfElements,otherList)))
for t in threadsElts:
t.start()
for t in threadsElts:
t.join()
问题出在代码上。用你的代码,我明白了错误:-你知道吗
如果像这样传递
listOfElements
,就可以解决这个问题本文件:你知道吗进行上述更改后,代码运行良好。你知道吗
另外,请记住,您在修改变量时没有使用任何锁,因此您的代码可能会损坏数据。您可能需要通过以下链接:http://effbot.org/zone/thread-synchronization.htm来更好地理解这个问题
你的问题很简单,
TypeError: addElement() takes exactly 1 argument (0 given)
。你知道吗它告诉我们您的问题是函数的param,而您的param是在线程
args=(listOfElements)
中给出的,看起来不错,但是语法错误。你知道吗在python中,元组是特殊的,如下所示:
你可以试试。你知道吗
相关问题 更多 >
编程相关推荐