
thread = threading.Thread(target=None, name=None, daemon=None, group=None, args=(), kwargs={})
# 实例化一个线程
# target是线程调用run()方法的时候会调用的函数
# 参数args和kwargs分别表示调用target时的参数列表和关键字参数
# name是该线程名称
# daemon=True时,thread dies when main thread (only non-daemon thread) exits.
thread.start() # 一个线程最多只能调用该方法一次,如果多次调用则会报RuntimeError错误。它会调用run方法
thread.run() # 在这里运行线程的具体任务
thread.join(timeout=None) # 阻塞全部线程直到当前线程任务结束,timeout为阻塞时间,None时会一直阻塞
thread.name
thread.getName()
thread.setName()
thread.is_alive() # 判断当前进程是否存活
threading.active_count() # 返回当前线程对象Thread的个数
threading.current_thread() # 返回当前的线程对象Thread
threading.current_thread().name # 返回当前线程的名称
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# -*- coding: utf-8 -*- __author__ = 'songhao' import time, threading # 新线程执行的代码: def loop(): print('thread %s is running...' % threading.current_thread().name) n = 0 while n < 3: n = n + 1 print('thread %s >>> %s' % (threading.current_thread().name, n)) time.sleep(1) print('thread %s ended.' % threading.current_thread().name) print('thread %s is running...' % threading.current_thread().name) for x in range(3): t = threading.Thread(target=loop, name='LoopThread %s'% str(x)) t.start() t.join() print('thread %s ended.' % threading.current_thread().name) ###output### ➜ d3 python3 c7.py thread MainThread is running... thread LoopThread 0 is running... thread LoopThread 0 >>> 1 thread LoopThread 0 >>> 2 thread LoopThread 0 >>> 3 thread LoopThread 0 ended. thread LoopThread 1 is running... thread LoopThread 1 >>> 1 thread LoopThread 1 >>> 2 thread LoopThread 1 >>> 3 thread LoopThread 1 ended. thread LoopThread 2 is running... thread LoopThread 2 >>> 1 thread LoopThread 2 >>> 2 thread LoopThread 2 >>> 3 thread LoopThread 2 ended. thread MainThread ended. |
例子1.以线程的方式启动和创建一个函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# -*- coding: utf-8 -*- import time __author__ = 'songhao' import threading def clock(kk): while True: print(time.ctime()) time.sleep(kk) t = threading.Thread(target=clock, args=(10,)) t.setDaemon = True // 设置线程的布尔型后台标志 t.start() |
t.setDaemon = True
// 设置线程的布尔型后台标志,必须在调用t.run()
方法之前,设置这个标志,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# -*- coding: utf-8 -*- __author__ = 'songhao' import threading import time class NewDemo(threading.Thread): def __init__(self,kk): threading.Thread.__init__(self) self.daemon = True self.kk = kk def run(self): while True: print(time.ctime()) time.sleep(self.kk) if __name__ == '__main__': n = NewDemo(10) n.start() n.jion() // 等到线程终止或者出现超时为止 |
