在调用线程之前

2024-10-01 15:38:57 发布

您现在位置:Python中文网/ 问答频道 /正文

t1=threading.Thread(target=self.read())
print "something"
t2=threading.Thread(target=self.runChecks(), args=(self))

self.read无限期运行,因此程序永远不会到达print行。如果不调用t1.start(),这怎么可能?(即使我这么说,它也应该开始运行并继续运行到下一行,不是吗?)在


Tags: self程序targetreadargsthreadstartsomething
1条回答
网友
1楼 · 发布于 2024-10-01 15:38:57

你正在传递的结果是自我阅读线程的目标参数。线程需要传递一个要调用的函数,因此只需删除括号并记住启动线程:

t1=threading.Thread(target=self.read)
t1.start()
print "something"

对于需要参数的目标,可以将argskwargs参数用于threading.Thread,也可以使用lambda。例如,要在线程中运行f(a, b, x=c),可以使用

^{pr2}$

或者

thread = threading.Thread(target=lambda: f(a, b, x=c))

不过,如果您选择lambda-lambda将在使用时查找fab、和{},而不是在定义{}时,因此,如果您在调度线程之前重新分配这些变量中的任何一个(这可能需要任意长的时间,即使您立即调用start),那么您可能会得到意外的结果。在

相关问题 更多 >

    热门问题