1. 云栖社区>
  2. >
  3. 正文

线程,正则表达式

作者:用户 来源:互联网 时间:2018-09-11 19:00:05

线程,正则表达式 - 摘要: 本文讲的是线程,正则表达式, 线程同步 同时对数据进行修改防止并发 锁使多线程任务更加安全 Condition:上锁(acquire())等待(wait())解锁(release())唤醒(notify(),notify_all()) 创键锁:lock=

线程同步
同时对数据进行修改防止并发
锁使多线程任务更加安全
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):
                list.append(i)
                print("伙夫生产第{0}个馒头".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("{0}在吃第{1}个馒头".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!!")





以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备