Python - 如何在构建线程步骤上启动线程

时间:2017-07-27 09:56:10

标签: python multithreading

我有这段代码:

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')

我需要开始方法' geter'只有在' t.start'之后才会出现在构建线程上。

但在我的情况下,我看到方法后的2张照片' geter'跑了。 我有这个印刷品:

FROM METHOD
THERE METHOD "GETER" SHOULD NOT RUN
THERE METHOD "GETER" WAS EXECUTED

如何运行方法' geter'仅在第一个和第二个PRINT之间(在步骤:t.start())? 我需要这张照片:

THERE METHOD "GETER" SHOULD NOT RUN
FROM METHOD
THERE METHOD "GETER" WAS EXECUTED

由于

1 个答案:

答案 0 :(得分:1)

问题是你正在调用(调用)函数而不是将它传递给Thread类,所以代替

t = threading.Thread(target=geter(token), args=(token,))

这样做:

t = threading.Thread(target=geter, args=(token,))

请注意,您不需要提供两次token,这应该暗示您出了问题。

target参数应该是一个函数(如geter)或None,但是因为你在那里调用函数,它返回None(因为它& #39;没有返回任何东西)你没有错误。但是你会遇到这种意想不到的行为