事件物件管理乙個內部標誌,通過set()方法將其設定為true,並使用clear()方法將其設定為false。wait()方法阻塞,直到標誌為true。該標誌初始為false。方法:is_set()
當且僅當內部標誌為true時返回true。
set()
將內部標誌設定為true。所有等待它成為true的執行緒都被喚醒。當標誌保持在true的狀態時,執行緒呼叫wait()是不會阻塞的。
clear()
將內部標誌重置為false。隨後,呼叫wait()的執行緒將阻塞,直到另乙個執行緒呼叫set()將內部標誌重新設定為true。
wait(timeout=none)
阻塞直到內部標誌為真。如果內部標誌在wait()方法呼叫時為true,則立即返回。否則,則阻塞,直到另乙個執行緒呼叫set()將標誌設定為true,或發生超時。
該方法總是返回true,除非設定了timeout並發生超時。
from threading importthread,event
import
time
defdb(e):
e.wait()
#預設是false
if e.is_set()==true:
print("
連線成功了哈哈哈")
defweb(e):
print("
資料網路開始正常")
time.sleep(1)
e.set()
##執行set則為開啟狀態 true
e=event()
p=thread(target=web,args=(e,))
p1=thread(target=db,args=(e,))
p.start()
p1.start()
#資料網路開始正常
#連線成功了哈哈哈##
程序已結束,退出** 0
importthreading,time
event = threading.event() #
'''事件預設是關閉狀態,執行set則為開啟狀態''
defa():
print("
我是第乙個執行緒函式a,我在等待函式b來觸發我...")
event.wait()
#預設是fale 開啟後就是true
print("
函式a說:尼瑪!我被函式b給觸發了...")
defb():
print("
我是第二個執行緒函式b,我開始去觸發函式a...")
time.sleep(1)
event.set()
##執行set則為開啟狀態 true
p = threading.thread(target=a)
c = threading.thread(target=b)
p.start()
c.start()##
我是第乙個執行緒函式a,我在等待函式b來觸發我...
#我是第二個執行緒函式b,我開始去觸發函式a...
#函式a說:尼瑪!我被函式b給觸發了...
用事件連線資料from threading import
thread,event
import
time
defdb(e):
count=0
while count<3:
e.wait()
#預設是false
if e.is_set()==true:
print("
連線成功了哈哈哈")
break
else
: count+=1
print("
你資料庫連線%s失敗
"%count)
else
:
raise timeouterror("
連線超時!!!!!!!!!!!!")
defweb(e):
print("
資料網路開始正常")
time.sleep(1)
e.set()
##執行set則為開啟狀態 true
e=event()
p=thread(target=web,args=(e,))
p1=thread(target=db,args=(e,))
p.start()
p1.start()
#資料網路開始正常
#連線成功了哈哈哈##
程序已結束,退出** 0
Python之併發程式設計(五)多執行緒
多執行緒的概念介紹 threading模組介紹 threading模組和multiprocessing模式在使用層面,有甚大的相似性 開啟多執行緒的兩種方式 開啟程序的第一種方式 1.建立執行緒的開銷比建立程序的開銷小,因而建立執行緒的速度快 from multiprocessing import ...
python併發程式設計 事件
通過乙個訊號 來控制 多個程序 同時 執行或者阻塞 事件 from multiprocessing import event 乙個訊號可以使所有的程序都進入阻塞狀態 也可以控制所有的程序解除阻塞 乙個事件被建立之後,預設是阻塞狀態 e event 建立了乙個事件 print e.is set 檢視乙...
併發程式設計(五) CAS
在atomic包中,大多數類都是借助unsafe類來實現的,如以下 public static atomicinteger count new atomicinteger 0 private static void add incrementandget 方法的實現如下 public final i...