我有以下代码:

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(因为它不返回任何内容),因此不会出错。但是,您确实得到了这种意外行为

09-06 20:09