__init__(self, group=None, target=None, name=None, args=(), kwargs=None, *,daemon=None)
此构造方法中,以上所有参数都是可选参数,即可以使用,也可以忽略。其中各个参数的含义如下:下面程序演示了如何使用 Thread 类的构造方法创建一个线程:这些参数,初学者只需记住 target、args、kwargs 这 3 个参数的功能即可。
import threading #定义线程要调用的方法,*add可接收多个以非关键字方式传入的参数 def action(*add): for arc in add: #调用 getName() 方法获取当前执行该程序的线程名 print(threading.current_thread().getName() +" "+ arc) #定义为线程方法传入的参数 my_tuple = ("http://c.biancheng.net/python/", "http://c.biancheng.net/shell/", "http://c.biancheng.net/java/") #创建线程 thread = threading.Thread(target = action,args =my_tuple)
由此就创建好了一个线程。但是线程需要手动启动才能运行,threading 模块提供了 start() 方法用来启动线程。因此在上面程序的基础上,添加如下语句:有关 Thread 类提供的和线程有关的方法,可阅读Python Thread手册,由于不是本节重点,这里不再进行详细介绍。
thread.start()再次执行程序,其输出结果为:
Thread-1 http://c.biancheng.net/python/
Thread-1 http://c.biancheng.net/shell/
Thread-1 http://c.biancheng.net/java/
为了使 thread 线程的作用更加明显,可以继续在上面程序的基础上添加如下代码,让主线程和新创建线程同时工作:默认情况下,主线程的名字为 MainThread,用户启动的多个线程的名字依次为 Thread-1、Thread-2、Thread-3、...、Thread-n 等。
for i in range(5): print(threading.current_thread().getName())再次执行程序,其输出结果为:
MainThreadThread-1 http://c.biancheng.net/python/
MainThreadThread-1 http://c.biancheng.net/shell/
MainThreadThread-1 http://c.biancheng.net/java/
MainThread
MainThread
如果程序中不显式创建任何线程,则所有程序的执行,都将由主线程 MainThread 完成,程序就只能按照顺序依次执行。
import threading #创建子线程类,继承自 Thread 类 class my_Thread(threading.Thread): def __init__(self,add): threading.Thread.__init__(self) self.add = add # 重写run()方法 def run(self): for arc in self.add: #调用 getName() 方法获取当前执行该程序的线程名 print(threading.current_thread().getName() +" "+ arc) #定义为 run() 方法传入的参数 my_tuple = ("http://c.biancheng.net/python/", "http://c.biancheng.net/shell/", "http://c.biancheng.net/java/") #创建子线程 mythread = my_Thread(my_tuple) #启动子线程 mythread.start() #主线程执行此循环 for i in range(5): print(threading.current_thread().getName())程序执行结果为:
MainThreadThread-1 http://c.biancheng.net/python/
MainThreadThread-1 http://c.biancheng.net/shell/
MainThreadThread-1 http://c.biancheng.net/java/
MainThread
MainThread
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有