1.使用_thread模块创建线程(Python 2 里面的thread) (不推荐使用)
def loop():
sleep(2)
_thread.start_new_thread(loop, ())
2.使用threading模块 (推荐使用)
1). 创建Thread实例,传给它一个函数
def loop(sec):
sleep(sec)
t = threading.Thread(target=loop, args=(5,) # 创建线程
t.start() # 启动线程
t.join() # 等待线程执行结束
2).创建Thread实例,传给它一个可调用的类实例
class ThreadFunc(object):
def __init__(self, func, args, name=''):
self.name = name
self.func = func
self.args = args
def __call__(self):
self.func(*self.args)
def loop(sec):
sleep(sec)
t = threading.Thread(target=ThreadFunc(loop, (5, ), loop.__name__)) # 创建线程
t.star()
t.join()
3)派生Thread子类,并创建子类的实例
class MyThread(threading.Thread):
def __init__(self, func, args, name=''):
threading.Thread.__init__(self)
self.name = name
self.func = func
self.args = args
def run(self):
self.func(*self.args)
def loop(sec):
sleep(sec)
t = MyThread(loop, (5,), loop.__name__) # 创建线程
t.star()
t.join()
ps:
# thread 模块不支持守护线程,当主线程退出时,所有子线程都将终止,不管他们是否仍在工作。
# threading 模块支持守护线程,在启动线程之前执行 thread.daemon = True。当主线程将在所有非守护线程退出之后才退出。
# 守护线程:如果把一个线程设置为守护线程,就表示这个线程是不重要的,主进程退出时不需要等待这个线程执行结束。