Keep practicing and deepen your memory.
#!/usr/bin/env python#-*-coding:utf-8-*-ImportThreadingImportTimeexitflag=0deffirst_function ():Print(Threading.currentthread (). GetName () +Str ('is starting \ n')) Time.sleep (2) Print(Threading.currentthread (). GetName () +Str ('is Exiting \ n'))defsecond_function ():Print(Threading.currentthread (). GetName () +Str ('is starting \ n')) Time.sleep (2) Print(Threading.currentthread (). GetName () +Str ('is Exiting \ n'))defthird_function ():Print(Threading.currentthread (). GetName () +Str ('is starting \ n')) Time.sleep (2) Print(Threading.currentthread (). GetName () +Str ('is Exiting \ n'))classMyThread (Threading. Thread):def __init__(self, ThreadID, name, counter): Threading. Thread.__init__(self) self.threadid=ThreadID Self.name=name Self.counter=counterdefRun (self):Print("starting"+self.name) print_time (Self.name, Self.counter,5) Print("Exiting"+self.name)defprint_time (threadname, Delay, counter): whileCounter:ifexitFlag:thread.exit () time.sleep (delay)Print("%s:%s"%(ThreadName, Time.ctime (Time.time () ))) counter-= 1if __name__=="__main__": T1=Threading. Thread (Name='first_function', target=first_function) T2=Threading. Thread (Name='second_function', target=second_function) T3=Threading. Thread (Name='third_function', target=third_function) T1.start () T2.start () T3.start () t1.join () t2.join () t3.join () thread1= MyThread (1,"Thread-1", 1) Thread2= MyThread (2,"Thread-2", 2) Thread1.start () Thread2.start () Thread1.join () Thread2.join ()Print("Exiting Main Thread")
Class-based and function-based Python multithreading example