繁体   English   中英

Python线程 - 多线程崩溃

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM