目录
2-10 Thead + Semaphore 实现 “信号量”
一、threading 模块:对线程的处理
multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性;
二、Thread组件
2-1 开启线程的方式一(函数)
from threading import Thread import time def task(name): print('%s is running' % name) time.sleep(2) print('%s is done' % name) if __name__ == '__main__': t = Thread(target=task, args=('线程1',)) t.start() print('main')
2-2 开启线程的方式二 (类)
from threading import Thread import time class Mythread(Thread): def run(self): print('%s is running' % self.name) time.sleep(2) print('%s is done' % self.name) if __name__ == '__main__': t = Mythread() t.start() print('main')
2-3 Thread 相关内置子方法
- obj.isAlive():返回线程是否为活动状态
- obj.getName():返回线程名
- obj.setName():设置线程名
- threading.currentThread():返回当前的线程变量
- threading.enumerate():返回一个包含正在运行的线程list,即线程启动后、结束前,不包括启动前和终止后的线程。
- threading.actibeCount():返回正在运行的线程数量,同 len ( threading.enumerate ( ) )
from threading import Thread import threading from multiprocessing import Process import os def work(): import time time.sleep(3) print(threading.current_thread().getName()) if __name__ == '__main__': #在主进程下开启线程 t=Thread(target=work) t.start() print(threading.current_thread().getName()) print(threading.current_thread()) #主线程 print(threading.enumerate()) #连同主线程在内有两个运行的线程 print(threading.active_count()) print('主线程/主进程') ''' 打印结果: MainThread <_MainThread(MainThread, started 140735268892672)> [<