threading.Thread(target=...)
的文档说明了
target
是run()方法调用的可调用对象。 默认为None,表示不调用任何内容。
我通常会这样使用它:
import threading
def worker():
a = 3
print("bonjour {a}".format(a=a))
threading.Thread(target=worker).start()
有没有办法将target
中的函数元素链接起来,以便不需要定义新的元素?类似的东西(显然是伪代码)
threading.Thread(target=(a=3;print("bonjour {a}".format(a=a))).start()
我在Thread
调用中进行了一系列非常短的调用,并且希望避免函数定义的增加。
答案 0 :(得分:8)
您可以在Python 3.x中使用lambda函数
import threading
threading.Thread(target=lambda a: print("Hello, {}".format(a)), args=(["world"]))
你应该看看this SO question,看看为什么你不能在lambda表达式的Python 2.x中使用print
。
实际上,你可以在你的lambda
中适应许多函数调用:
from __future__ import print_function # I'm on Python 2.7
from threading import Thread
Thread(target=(lambda: print('test') == print('hello'))).start()
这将同时打印test
和hello
。
答案 1 :(得分:2)
我不是非常喜欢使用exec
,但在Python3.x中它是一个函数,所以你可以做
threading.Thread(target=exec, args=('a=3; print("bonjour {a}".format(a=a))',)