
由于尾随的
()对
target=self.read(),你正在运行
self.read在错误的线程,在 当前 线程-而不是新线程你创建-并传递
返回值
的的
self.read召唤为
target的说法
Thread。
Thread期望传递给函数以进行调用,因此只需删除括号并记住启动线程即可:
t1=threading.Thread(target=self.read)t1.start()print("something")对于需要参数的目标,可以使用
args和的
kwargs参数
threading.Thread,也可以使用lambda。例如,要
f(a, b,x=c)在线程中运行,可以使用
thread = threading.Thread(target=f, args=(a, b), kwargs={'x': c})要么
thread = threading.Thread(target=lambda: f(a, b, x=c))
虽然看出来,如果你选择的拉姆达-
拉姆达将查找
f,
a,
b,并
c在使用时,而不是在
lambda被定义,因此如果您重新分配任何这些变量的线程调度之前可能会得到意想不到的结果(这可能即使您
start立即致电,也要花任意时间)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)