Python 线程 - 多线程崩溃
Python Threading - Crash with multiple threads
我使用 Python 的多线程线程模块编写了一个小的 python 脚本。
threading.Thread
调用的目标函数有两个参数(self
和另一个值)。但是我总是得到以下错误 TypeError: example() takes 2 positional arguments but 3 were given
即使只给出了 2 个参数。
import threading
import random
num=random.randint(1,999)
threadN=10 #number of processes
a="11" #testing value
class ExampleClass():
def __init__(self):
self.num=num
def example(self,a):
print(self.num)
print(a)
if __name__ == '__main__':
cl=ExampleClass()
while threadN>0:
threading.Thread(target=cl.example, args=(a)).start()
threadN-=1
如有任何帮助,我们将不胜感激!
好的,刚刚发现我的问题,再次查看文档并发现以下内容:
threading.Thread(target=cl.example args=[t]).start()
使用 [ ] 作为参数可以解决问题...
args
必须是列表或元组,但 ()
不会创建元组。您必须使用逗号来创建具有单个值的元组 - args=(a,)
threading.Thread(target=cl.example, args=(t,)).start()
()
在这里仅用于将创建元组的逗号与分隔函数参数的逗号分开。你可以在没有 ()
的情况下做同样的事情,但是你必须在线程
之前创建元组
arguments = a,
threading.Thread(target=cl.example, args=arguments).start()
我使用 Python 的多线程线程模块编写了一个小的 python 脚本。
threading.Thread
调用的目标函数有两个参数(self
和另一个值)。但是我总是得到以下错误 TypeError: example() takes 2 positional arguments but 3 were given
即使只给出了 2 个参数。
import threading
import random
num=random.randint(1,999)
threadN=10 #number of processes
a="11" #testing value
class ExampleClass():
def __init__(self):
self.num=num
def example(self,a):
print(self.num)
print(a)
if __name__ == '__main__':
cl=ExampleClass()
while threadN>0:
threading.Thread(target=cl.example, args=(a)).start()
threadN-=1
如有任何帮助,我们将不胜感激!
好的,刚刚发现我的问题,再次查看文档并发现以下内容:
threading.Thread(target=cl.example args=[t]).start()
使用 [ ] 作为参数可以解决问题...
args
必须是列表或元组,但 ()
不会创建元组。您必须使用逗号来创建具有单个值的元组 - args=(a,)
threading.Thread(target=cl.example, args=(t,)).start()
()
在这里仅用于将创建元组的逗号与分隔函数参数的逗号分开。你可以在没有 ()
的情况下做同样的事情,但是你必须在线程
arguments = a,
threading.Thread(target=cl.example, args=arguments).start()