threading for in range( ) thread(name='wstr( )target=workerargs=[local_data] start(show_value(local_dataprint(currentthread(namedone'the output from this is mainthread starting mainthread no value yet no value yet value no value yet value mainthread no value yet mainthread done the example presented above defines two functions the first function attempts to access value in the thread local data object if the value is not present an exception is raised (attributeerrorthe show_value(function catches the exception or successfully processes the data the worker function calls show_value(twiceonce before it sets value in the local data object and once after as this function will be run by separate threads the currentthread name is printed by the show_value(function the main function crates local data object using the local(function from the threading library it then calls show_value(itself next it creates two threads to execute the worker function in passing the local_data object into themeach thread is then started finallyit calls show_value(again as can be seen from the output one thread cannot see the data set by another thread in the local_data object (even when the attribute name is the same timers the timer class represents an action (or taskto run after certain amount of time has elapsed the timer class is subclass of thread and as such also functions as an example of creating custom threads