執行緒同步同時對資料進行修改防止併發
鎖使多執行緒任務更加安全
condition:上鎖(acquire())等待(wait())解鎖(release())喚醒(notify(),notify_all())
創鍵鎖:lock=threading.lock()
threading.condition(lock=lock)
import threading
import time
lock=threading.lock()
cond=threading.condition(lock=lock)
class thread1(threading.thread):
def run(self):
for i in range(1,11):
if i==3:
cond.acquire()
cond.wait()
cond.release()
print(i)
time.sleep(1)
class thread2(threading.thread):
def run(self):
for i in range(30,19,-1):
print(i)
time.sleep(1)
cond.acquire()
cond.notify()
cond.release()
t1=thread1()
t2=thread2()
t1.start()
t2.start()
生產者和消費者模式吃貨與夥伕
import threading
import time
list=
lock=threading.lock()
huofucon=threading.condition(lock=lock)
lock2=threading.lock()
chihuocon=threading.condition(lock=lock2)
class huofu(threading.thread):
def run(self):
while true:
chihuocon.acquire()
for i in range(1,11):
print("夥伕生產第個饅頭".format(i))
time.sleep(1)
#等待huofucon.acquire()
chihuocon.notify_all()
chihuocon.release()
huofucon.wait()
huofucon.release()
mantou=none
class chihuo(threading.thread):
def __init__(self,name):
threading.thread.__init__(self)
self.name=name
def run(self):
while true:
chihuocon.acquire()
if len(list)==0:
huofucon.acquire()
huofucon.notify()
huofucon.release()
chihuocon.wait()
chihuocon.release()
chihuocon.acquire()
if len(list)>0:
mantou=list.pop()
print("在吃第個饅頭".format(threading.current_thread().name,mantou))
time.sleep(1)
chihuocon.release()
huofu=huofu()
chihuo1=chihuo('吃貨1')
chihuo2=chihuo('吃貨2')
chihuo3=chihuo('吃貨3')
huofu.start()
chihuo1.start()
chihuo2.start()
chihuo3.start()
正規表示式
re.m 多行匹配,影響 ^ 和 $re.i 使匹配對大小寫不敏感
#match
import re
print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配 返回0 3
print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配 返回none
line = "cats are smarter than dogs"
matchobj = re.match(r'(.*) are (.*?) .*', line, re.m | re.i)
if matchobj:
print("matchobj.group() : ", matchobj.group())
print("matchobj.group(1) : ", matchobj.group(1))
print("matchobj.group(2) : ", matchobj.group(2))
else:
print("no match!!")
#search
import re
print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配
print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配
import re
line = "cats are smarter than dogs";
searchobj = re.search( r'(.*) are (.*?) .*', line, re.m|re.i)
if searchobj:
print ("searchobj.group() : ", searchobj.group())
print ("searchobj.group(1) : ", searchobj.group(1))
print ("searchobj.group(2) : ", searchobj.group(2))
else:
print ("nothing found!!")
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...