1. 程式人生 > >【筆記】執行緒組

【筆記】執行緒組

目錄:

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