问题
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.4
threading.main_thread(),它比上面的要好得多:
assert threading.current_thread() is threading.main_thread()
更新2:
对于Python <3.4,也许最好的选择是:
isinstance(threading.current_thread(), threading._MainThread)



