我喜欢将函数转换为线程的能力,无需不必要地定义类。我知道关于_thread,但似乎不应使用_thread。对于Python 3是否有thread.start_new_thread的最佳实践替代方法?
我喜欢将函数转换为线程的能力,无需不必要地定义类。我知道关于_thread,但似乎不应使用_thread。对于Python 3是否有thread.start_new_thread的最佳实践替代方法?
threading.Thread(target=some_callable_function).start()
或者如果您希望传递参数,
threading.Thread(target=some_callable_function,
args=(tuple, of, args),
kwargs={'dict': 'of', 'keyword': 'args'},
).start()
很不幸,没有直接的等价物,因为Python 3旨在比Python 2更具可移植性,而_thread
接口被视为太低级了。
在Python 3中,通常最好的做法是使用threading.Thread(target=f...)
。这种方法使用不同的语义,但是它更受欢迎,因为接口更易于移植到其他Python实现上。
(firstarg,)
而不是(firstarg)
,请记住单元素元组需要加上尾随逗号才能被解释为元组。 - Ambercallable(**kwargs):
这样的东西,我会得到TypeError: callable() takes 0 positional arguments but 1 was given
,如果我使用callable(kwargs):
,我会得到TypeError: callable() got an unexpected keyword argument 'raw'
。 - henrikstroem