Python_09_20200228
变更履历
日期 | 版本 | 内容 | 作者 | 备注 |
---|---|---|---|---|
2020/02/28 | v1.00 | 初版做成 | author | 坐井观天的猴子 |
线程与进程
线程
线程是CPU的最小调度,就是一堆指令
进程(PID)
进程是资源的集合
一个进程有一簇线程,线程之间不断调度,又线程只花费很少的时间,所以看起来是同时运行的
两者没有可比性,就像问是光和波那个快一样。
启动线程比启动进程快
线程共享内存空间,进程的内存是相互独立的
一个进程内的线程之间可以相互控制。
import threading
import time
#多线程
def run(n):
print("thread:",n)
time.sleep(3)
t1=threading.Thread(target=run,args=("1",))
t2=threading.Thread(target=run,args=("2",))
t1.start()
t2.start()
守护线程
t.setDaemon(True)#主线程结束,子线程也结束
t.start()
#互斥锁
lock=threading.Lock()
#使用多个数据锁时,容易导致线程锁死
#递归锁
lock=threading.RLock()
lock.acquire()#数据🔒
#数据处理
lock.release()
#信号量:允许同一时间多个同时修改,类似于队列
semaphore=threding.Boundedsemaphore(5)#最多允许5个线程同时运行
semaphore.acquire()
#数据处理
semaphore.release()
事件(event)
event=threading.Event()
event.set()
event.clear()
event.wait()
队列(Queue)
先入先出
class queue.Queue
class queue.LifoQueue
Queue。put()
Queue.get()