In Python, the threading module defines and calls the thread method, pythonthreading

Source: Internet
Author: User

In Python, the threading module defines and calls the thread method, pythonthreading

Define thread

The simplest method is to use target to specify the target function to be executed by the thread, and then start with start.


class threading.Thread(group=None, target=None, name=None, args=(), kwargs={})

The group value is always None, which will be used in the future. Target is the name of the function to be executed. Name indicates the Thread name. The default value is Thread-N. Generally, the default value is used. However, we recommend that you name the thread function of the server program.

#!/usr/bin/env python3# coding=utf-8import threadingdef function(i):  print ("function called by thread {0}".format(i))threads = []for i in range(5):  t = threading.Thread(target=function , args=(i,))  threads.append(t)  t.start()  t.join()

Execution result:

$ ./ 
function called by thread 0function called by thread 1function called by thread 2function called by thread 3function called by thread 4

Determine the current thread

#!/usr/bin/env python3# coding=utf-8import threadingimport timedef first_function():  print (threading.currentThread().getName()+ str(' is Starting \n'))  time.sleep(3)  print (threading.currentThread().getName()+ str( ' is Exiting \n'))  def second_function():  print (threading.currentThread().getName()+ str(' is Starting \n'))  time.sleep(2)  print (threading.currentThread().getName()+ str( ' is Exiting \n'))  def third_function():  print (threading.currentThread().getName()+\  str(' is Starting \n'))  time.sleep(1)  print (threading.currentThread().getName()+ str( ' is Exiting \n'))  if __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()

Execution result:

$ ./ 
first_function is Starting second_function is Starting third_function is Starting third_function is Exiting second_function is Exiting first_function is Exiting

Used with the logging module:

#!/usr/bin/env python3# coding=utf-8import loggingimport threadingimport timelogging.basicConfig(  level=logging.DEBUG,  format='[%(levelname)s] (%(threadName)-10s) %(message)s',  )  def worker():  logging.debug('Starting')  time.sleep(2)  logging.debug('Exiting')  def my_service():  logging.debug('Starting')  time.sleep(3)  logging.debug('Exiting')  t = threading.Thread(name='my_service', target=my_service)w = threading.Thread(name='worker', target=worker)w2 = threading.Thread(target=worker) # use default namew.start()w2.start()t.start()

Execution result:

$ ./[DEBUG] (worker  ) Starting
[DEBUG] (Thread-1 ) Starting[DEBUG] (my_service) Starting[DEBUG] (worker  ) Exiting[DEBUG] (Thread-1 ) Exiting[DEBUG] (my_service) Exiting

Use thread in subclass

Previously, our threads were created in the form of structured programming. You can also create a Thread by integrating the threading. Thread class. The Thread class first completes some basic initialization and then calls its run (). The run () method calls the target function passed to the constructor.

#!/usr/bin/env python3# coding=utf-8import loggingimport threadingimport timeexitFlag = 0class myThread (threading.Thread):  def __init__(self, threadID, name, counter):    threading.Thread.__init__(self)    self.threadID = threadID = name    self.counter = counter      def run(self):    print ("Starting " +    print_time(, self.counter, 5)    print ("Exiting " +    def print_time(threadName, delay, counter):  while counter:    if exitFlag:      thread.exit()    time.sleep(delay)    print ("%s: %s" %(threadName, time.ctime(time.time())))    counter -= 1    # Create new threadsthread1 = myThread(1, "Thread-1", 1)thread2 = myThread(2, "Thread-2", 2)# Start new Threadsthread1.start()thread2.start()print ("Exiting Main Thread")

Execution result:

$ ./ 
Starting Thread-1Starting Thread-2Exiting Main ThreadThread-1: Tue Sep 15 11:03:21 2015Thread-2: Tue Sep 15 11:03:22 2015Thread-1: Tue Sep 15 11:03:22 2015Thread-1: Tue Sep 15 11:03:23 2015Thread-2: Tue Sep 15 11:03:24 2015Thread-1: Tue Sep 15 11:03:24 2015Thread-1: Tue Sep 15 11:03:25 2015Exiting Thread-1Thread-2: Tue Sep 15 11:03:26 2015Thread-2: Tue Sep 15 11:03:28 2015Thread-2: Tue Sep 15 11:03:30 2015Exiting Thread-2

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.