【筆記】執行緒組
阿新 • • 發佈:2018-12-22
目錄:
1,正常執行緒:2個def, 順序執行
2,多執行緒: 2個def,同時執行(threading模組)
3,檢視當執行緒名字:
print(threading.enumerate())
4,繼承自threading.Thread類
def a():
for x in range(3):
print('你%s'% threading.current_thread())
time.sleep(1)
5,多執行緒共享全域性變數的問題
glock=threading.Lock() --鎖 glock.acquire()#枷鎖 glock.release()#解鎖
6,生產者和消費者
7,Condition
acquire ---上鎖
release ---解鎖
wait ----等待狀態
notify ---通知這個“等待狀態”,預設第一執行
notify_all --所以“等待狀態”,都解鎖
8,Queue執行緒 安全佇列
from queue import Queue
q=Queue(4)#建立一個先進先出的執行緒
qsize() ---返回佇列大小
empty() ---判斷佇列是否空
full() ---判斷佇列是否滿了
get() ---列表最後一個數據
put() ----將一個數據放入列表
一,正常執行緒(按順序執行)
#正常執行緒(按順序執行)
def a():
for x in range(3):
print('你%s'%x)
time.sleep(1)
def b():
for x in range(3):
print('我%s'%x)
time.sleep(1)
def main():
a()
b()
if __name__ =='__main__':
main()
返回 》》123123
二,多執行緒 (2個方法--同時執行)
#多執行緒 (2個方法--同時執行) threading模組 def a(): for x in range(3): print('你%s'%x) time.sleep(1) def b(): for x in range(3): print('我%s'%x) time.sleep(1) def main(): t1 =threading.Thread(target=a) t2 =threading.Thread(target=b) t1.start() t2.start() if __name__ =='__main__': main() 》》112233
三,多執行緒共享全域性變數的問題
import threading
import time
VALUE =0
#新增鎖
glock=threading.Lock()
def add_value():
global VALUE #呼叫外面變數
glock.acquire()#枷鎖
for x in range(1000):
VALUE+=1
glock.release()#解鎖
print('value%s'%VALUE)
if __name__ =='__main__':
add_value()
八,安全線組
from queue import Queue
q=Queue(4)
q.put(1)
print(q.full())# >>False