Start a new thread and return its identifier.
The thread will call the function with positional arguments from the
tuple args and keyword arguments taken from the optional dictionary
kwargs. The thread exits when the function returns; the return value
is ignored. The thread will also exit when the function raises an
unhandled exception; a stack trace will be printed unless the exception
is SystemExit.