我有这个代码:
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
(因为它没有返回任何内容(,因此您不会出错。但是,您确实会遇到这种意外行为