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()