下面是详细讲解“Python 多线程,threading模块,创建子线程的两种方式示例”的攻略:
在Python中,线程由 threading
模块来创建和管理。
启动一个线程,需要使用 threading.Thread
类,具体有两种方式实现。
首先我们来看第一种方式,直接传递可调用对象给 Thread 构造器:
import threading
def worker():
"""新线程执行的代码"""
print('Worker')
return
# 创建线程
threads = []
for i in range(5):
t = threading.Thread(target=worker)
threads.append(t)
t.start()
上面的代码中,我们定义了一个 worker
函数作为新线程执行的代码,然后使用 for循环创建五个线程,每个线程都调用了 t = threading.Thread(target=worker)
创建线程的操作,并将创建的线程存入一个列表中,最后调用 t.start()
方法启动线程。
第二种方式,是从 threading.Thread
类继承并创建子类:
import threading
class MyThread(threading.Thread):
"""新线程的类"""
def __init__(self):
threading.Thread.__init__(self)
def run(self):
"""新线程执行的代码"""
print('Worker')
# 创建线程
threads = []
for i in range(5):
t = MyThread()
threads.append(t)
t.start()
上面的代码中,我们继承了 threading.Thread
并创建了一个名为 MyThread
的子类。然后在 MyThread
中重载了 run
方法,在 run
方法中编写了新线程的具体执行代码,最后启动线程的方式和第一种方式一样。
以上就是创建 Python 线程的两种方式,可以根据需求选择不同的方式来创建线程。
还有一点需要注意,线程调用的代码尽量不要带有 I/O 操作(即文件读写、网络操作)等,这样会降低多线程的效率。如果需要进行 I/O 操作,请使用 Python 的异步编程模型。