博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Day 30 process&thread_2
阅读量:4658 次
发布时间:2019-06-09

本文共 1985 字,大约阅读时间需要 6 分钟。

进程和线程_2

1、继承类创建线程

1 import threading,time 2  3 class Mythread(threading.Thread):       #建立类,继承threading.Thread 4     def __init__(self): 5         threading.Thread.__init__(self)     #继承父类的__init__功能 6  7     def run(self):          #run为python 自带,后面实例化后,start()自动调用run()功能 8         print("{name} start to read in the {time}.".format(name=self,time = time.ctime())) 9 10 l = []11 for i in range(6):12     t = Mythread()13     t.start()                       #相当于t.run() 14     l.append(t)15     t.join()16 17 # for j in l:18 #     j.join()19 20 print("All is end...{time}".format(time=time.ctime()))

 

2、互斥锁

1 import threading 2 import time 3  4 lock = threading.Lock()         #引用互斥锁,使用前先定义 5  6 def sub(): 7     global num 8     lock.acquire()              #lock.aquire() 引用锁后,只有运行到release()才能让其它单位继续引用 9     temp = num10     time.sleep(0.1)11     num = temp - 112     lock.release()              #释放锁13     time.sleep(2)14 15 num = 10016 l = []17 for i in range(100):18     t = threading.Thread(target=sub,args=())19     t.start()20     l.append(t)21 22 for t in l:23     t.join()24 25 print(num)

 

 

3、递归锁和死锁

import threading,timeRlock = threading.RLock()  #Rlock引入Lock和counter变量,每进行一次acquire,counter计数一次,release则减少一次,直到归0,其它线程才可以获得资源。class Th(threading.Thread):    def __init__(self):        threading.Thread.__init__(self)    def run(self):        self.foo()        self.bar()    def foo(self):        Rlock.acquire()        print("I am %s GET LOCKA.....%s" %(self.name,time.ctime()))        Rlock.acquire()        print("I am %s GET LOCKB.....%s" %(self.name,time.ctime()))        Rlock.release()        Rlock.release()    def bar(self):        Rlock.acquire()        print("I am %s GET LOCKA.....%s" %(self.name,time.ctime()))        time.sleep(1)        Rlock.acquire()        print("I am %s GET LOCKB.....%s" %(self.name,time.ctime()))        Rlock.release()        Rlock.release()for i in range(10):    t = Th()    t.start()

 

  

转载于:https://www.cnblogs.com/LiChaoAI/p/7200474.html

你可能感兴趣的文章
zookeeper-3.4.5-cdh5.1.0 完全分布式安装
查看>>
1.2输出100以内的素数&输出前100个素数。
查看>>
小白的python之路11/14
查看>>
客户端传入数据的校验-RestController进阶
查看>>
靠查看英语资料 , “一不小心”成了国内第一
查看>>
人月神话 中文版 pdf
查看>>
JavaScript高级程序设计(第3版)中文高清完整pdf
查看>>
Oracle性能优化求生指南pdf
查看>>
深度探索C++对象模型.pdf
查看>>
vim中的区块选择与tag
查看>>
Ajax post时需要注意的问题
查看>>
poj 2478 Farey Sequence 欧拉函数
查看>>
符合我公司GIS开源解决方案的探讨
查看>>
weblogic
查看>>
新高一自我剖析
查看>>
翻译「C++ Rvalue References Explained」C++右值引用详解 Part2:Move语义
查看>>
Linux MySQL安装与修改字符格式
查看>>
汉诺塔
查看>>
03html和css
查看>>
MySQL学习笔记
查看>>