我有以下代码:
import threading
tokens = [here are list with tokens]
def geter(token):
print('FROM METHOD')
for token in tokens:
t = threading.Thread(target=geter(token), args=(token,))
print('THERE METHOD "GETER" SHOULD NOT RUN')
t.start()
print('THERE METHOD "GETER" WAS EXECUTED')
我只需要在“ t.start”之后启动方法“ geter”,而不是在构建线程步骤上启动。
但是在我的情况下,运行方法“ geter”后我看到了2张照片。
我有此打印:
FROM METHOD
THERE METHOD "GETER" SHOULD NOT RUN
THERE METHOD "GETER" WAS EXECUTED
如何仅在第一个和第二个PRINT之间运行方法“ geter”(在步骤:t.start())?
我需要此打印:
THERE METHOD "GETER" SHOULD NOT RUN
FROM METHOD
THERE METHOD "GETER" WAS EXECUTED
谢谢
最佳答案
问题是您正在调用(调用)该函数,而不是将其传递给Thread
类,因此
t = threading.Thread(target=geter(token), args=(token,))
做这个:
t = threading.Thread(target=geter, args=(token,))
请注意,您不需要两次提供
token
,这应该已经提示您出了点问题。target
参数应该是一个函数(例如geter
)或None
,但是由于您在此处调用该函数,该函数将返回None
(因为它不返回任何内容),因此不会出错。但是,您确实得到了这种意外行为