问题threading.current_thread().name == 'MainThread'
在于人们总是可以做到:
threading.current_thread().name = 'MyName'
assert threading.current_thread().name == 'MainThread' # will fail
也许以下几点更可靠:
threading.current_thread().__class__.__name__ == '_MainThread'
话虽如此,一个人可能仍然会狡猾地做:
threading.current_thread().__class__.__name__ = 'Grrrr'
assert threading.current_thread().__class__.__name__ == '_MainThread' # will fail
但是这种选择似乎还是更好。“毕竟,我们都同意这里的成年人。”
引入了Python 3.4threading.main_thread()
,它比上面的要好得多:
assert threading.current_thread() is threading.main_thread()
对于Python <3.4,也许最好的选择是:
isinstance(threading.current_thread(), threading._MainThread)