def start(self, show_exit_option=None):
self.previous_active_menu = CursesMenu.currently_active_menu<EOL>CursesMenu.currently_active_menu = None<EOL>self.should_exit = False<EOL>if show_exit_option is None:<EOL><INDENT>show_exit_option = self.show_exit_option<EOL><DEDENT>if show_exit_option:<EOL><INDENT>self.add_exit()<EOL><DEDENT>else:<EOL><INDENT>self.remove_exit()<EOL><DEDENT>try:<EOL><INDENT>self._main_thread = threading.Thread(target=self._wrap_start, daemon=True)<EOL><DEDENT>except TypeError:<EOL><INDENT>self._main_thread = threading.Thread(target=self._wrap_start)<EOL>self._main_thread.daemon = True<EOL><DEDENT>self._main_thread.start()<EOL>
Start the menu in a new thread and allow the user to interact with it.
The thread is a daemon, so :meth:`join()<cursesmenu.CursesMenu.join>` should be called if there's a possibility\
that the main thread will exit before the menu is done

:param bool show_exit_option: Whether the exit item should be shown, defaults to\
the value set in the constructor