[英]Python Threading - Crash with multiple threads
我使用Python的线程模块编写了一个用于多线程的小python脚本。
由threading.Thread
调用的目标函数需要2个参数( self
和另一个值)。 但是我总是得到以下错误TypeError: example() takes 2 positional arguments but 3 were given
即使只TypeError: example() takes 2 positional arguments but 3 were given
了2个参数,也会给出TypeError: example() takes 2 positional arguments but 3 were given
个参数。
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
任何帮助,将不胜感激!
args
必须是list或tuple但()
不会创建元组。 你必须使用逗号来创建单值的元组 - args=(a,)
threading.Thread(target=cl.example, args=(t,)).start()
()
这里只是单独的逗号,它用逗号创建元组,它在函数中分隔参数。 你可以在没有()
情况下做同样的事情,但你必须在线程之前创建元组
arguments = a,
threading.Thread(target=cl.example, args=arguments).start()
好的,刚刚发现我的问题,再次查看文档并发现以下内容:
threading.Thread(target=cl.example args=[t]).start()
使用[]作为参数解决问题...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.