python中的全局变量未编辑

2024-07-01 07:34:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了以下代码(简化)将对象添加到一个最初为空的列表(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()

Tags: inimporttarget列表fordefargsrange
2条回答

问题出在代码上。用你的代码,我明白了错误:-你知道吗

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/local/akamai/lib/python2.7/threading.py", line 551, in __bootstrap_inner
  File "/usr/local/akamai/lib/python2.7/threading.py", line 504, in run
TypeError: addElement() takes exactly 1 argument (0 given)

Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/local/akamai/lib/python2.7/threading.py", line 551, in __bootstrap_inner
  File "/usr/local/akamai/lib/python2.7/threading.py", line 504, in run
TypeError: addElement() takes exactly 1 argument (0 given)

Exception in thread Thread-3:
Traceback (most recent call last):
  File "/usr/local/akamai/lib/python2.7/threading.py", line 551, in __bootstrap_inner
  File "/usr/local/akamai/lib/python2.7/threading.py", line 504, in run
TypeError: addElement() takes exactly 1 argument (0 given)

Exception in thread Thread-4:
Traceback (most recent call last):
  File "/usr/local/akamai/lib/python2.7/threading.py", line 551, in __bootstrap_inner
  File "/usr/local/akamai/lib/python2.7/threading.py", line 504, in run
TypeError: addElement() takes exactly 1 argument (0 given)

Exception in thread Thread-5:
Traceback (most recent call last):
  File "/usr/local/akamai/lib/python2.7/threading.py", line 551, in __bootstrap_inner
  File "/usr/local/akamai/lib/python2.7/threading.py", line 504, in run
TypeError: addElement() takes exactly 1 argument (0 given)

Exception in thread Thread-6:
Traceback (most recent call last):
  File "/usr/local/akamai/lib/python2.7/threading.py", line 551, in __bootstrap_inner
  File "/usr/local/akamai/lib/python2.7/threading.py", line 504, in run
TypeError: addElement() takes exactly 1 argument (0 given)

Exception in thread Thread-7:
Traceback (most recent call last):
  File "/usr/local/akamai/lib/python2.7/threading.py", line 551, in __bootstrap_inner
  File "/usr/local/akamai/lib/python2.7/threading.py", line 504, in run
TypeError: addElement() takes exactly 1 argument (0 given)

Exception in thread Thread-8:
Traceback (most recent call last):
  File "/usr/local/akamai/lib/python2.7/threading.py", line 551, in __bootstrap_inner
  File "/usr/local/akamai/lib/python2.7/threading.py", line 504, in run
TypeError: addElement() takes exactly 1 argument (0 given)

Exception in thread Thread-9:
Traceback (most recent call last):
  File "/usr/local/akamai/lib/python2.7/threading.py", line 551, in __bootstrap_inner
  File "/usr/local/akamai/lib/python2.7/threading.py", line 504, in run
TypeError: addElement() takes exactly 1 argument (0 given)

Exception in thread Thread-10:
Traceback (most recent call last):
  File "/usr/local/akamai/lib/python2.7/threading.py", line 551, in __bootstrap_inner
  File "/usr/local/akamai/lib/python2.7/threading.py", line 504, in run
TypeError: addElement() takes exactly 1 argument (0 given)

如果像这样传递listOfElements,就可以解决这个问题本文件:你知道吗

threadsElts.append(threading.Thread(target=addElement,args=(listOfElements,)))

进行上述更改后,代码运行良好。你知道吗

另外,请记住,您在修改变量时没有使用任何锁,因此您的代码可能会损坏数据。您可能需要通过以下链接:http://effbot.org/zone/thread-synchronization.htm来更好地理解这个问题

你的问题很简单,TypeError: addElement() takes exactly 1 argument (0 given)。你知道吗

它告诉我们您的问题是函数的param,而您的param是在线程args=(listOfElements)中给出的,看起来不错,但是语法错误。你知道吗

在python中,元组是特殊的,如下所示:

a = () # a has no element
a = (1) # error
a = (1,) # yes, a has one element, the dot cannot be missing, special
a = (1,2) # yes, a has two

你可以试试。你知道吗

相关问题 更多 >

    热门问题