进程和线程_2

1、继承类创建线程

 import threading,time

 class Mythread(threading.Thread):       #建立类,继承threading.Thread
def __init__(self):
threading.Thread.__init__(self) #继承父类的__init__功能 def run(self): #run为python 自带,后面实例化后,start()自动调用run()功能
print("{name} start to read in the {time}.".format(name=self,time = time.ctime())) l = []
for i in range(6):
t = Mythread()
t.start() #相当于t.run()
l.append(t)
t.join() # for j in l:
# j.join() print("All is end...{time}".format(time=time.ctime()))

2、互斥锁

 import threading
import time lock = threading.Lock() #引用互斥锁,使用前先定义 def sub():
global num
lock.acquire() #lock.aquire() 引用锁后,只有运行到release()才能让其它单位继续引用
temp = num
time.sleep(0.1)
num = temp - 1
lock.release() #释放锁
time.sleep(2) num = 100
l = []
for i in range(100):
t = threading.Thread(target=sub,args=())
t.start()
l.append(t) for t in l:
t.join() print(num)

3、递归锁和死锁

import threading,time

Rlock = 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()

  

Day 30 process&thread_2的更多相关文章

  1. java基础学习05(面向对象基础01)

    面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...

  2. (4)opencv在android平台上实现 物体跟踪

    最近项目时间很紧,抓紧时间集中精力去研究android平台的opencv里的物体跟踪技术 其他几篇文章有时间再去完善吧 从网上找到了一些实例代码,我想采取的学习方法是研究实例代码和看教程相结合,教程是 ...

  3. 常用oracle查询总结

    --查询表空间使用情况 SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", ...

  4. Go学习笔记01-语言

    1.1 变量 Go 是静态类型语言,不能在运行期改变变量类型.使用关键字 var 定义变量,自动初始化为零值.如果提供初始化值,可省略变量类型,由编译器自动推断. var x int var f fl ...

  5. [20190418]exclusive latch spin count.txt

    [20190418]exclusive latch spin count.txt--//昨天测试"process allocation" latch,主要这个latch与其它拴锁s ...

  6. Future、 CompletableFuture、ThreadPoolTaskExecutor简单实践

    一 Future(jdk5引入) 简介: Future接口是Java多线程Future模式的实现,可以来进行异步计算. 可以使用isDone方法检查计算是否完成,或者使用get阻塞住调用线程,直到计算 ...

  7. PHP共享内存详解

    前言 在PHP中有这么一族函数,他们是对UNIX的V IPC函数族的包装. 它们很少被人们用到,但是它们却很强大.巧妙的运用它们,可以让你事倍功半. 它们包括: 信号量(Semaphores) 共享内 ...

  8. Oracle11g温习-第五章:数据字典

    1.数据字典(Data dictionary)的功能 1)   central of oracle   database               每个oracle数据库的核心 2)   descr ...

  9. 用 WebSocket 实现一个简单的客服聊天系统

    一 需求 一个多商家的电商系统,比如京东商城,不同商家之间的客服是不同的,所面对的用户也是不同的.要实现一个这样的客服聊天系统,那该系统就必须是一个支持多客服.客服一对多用户的聊天系统. 二 思路 使 ...

随机推荐

  1. 【linux】CPU,内存对网站的影响

    如果读写非常多,建议内存大点 如果涉及到的计算非常多,那就升级CPU

  2. Codeforces Round #459 (Div. 2)-A. Eleven

    A. Eleven time limit per test1 second memory limit per test256 megabytes Problem Description Eleven ...

  3. 图学java基础篇之集合工具

    两个工具类 java.utils下又两个集合相关_(准确来说其中一个是数组的)_的工具类:Arrays和Collections,其中提供了很多针对集合的操作,其中涵盖了一下几个方面: 拷贝.填充.反转 ...

  4. Python虚拟机类机制之descriptor(三)

    从slot到descriptor 在Python虚拟机类机制之填充tp_dict(二)这一章的末尾,我们介绍了slot,slot包含了很多关于一个操作的信息,但是很可惜,在tp_dict中,与__ge ...

  5. mysql基础查询

    #进阶1:基础查询/*语法:select:查询列表 from 表名; 类似于:System.out.println(打印的东西); 特点:1.查询列表可以是:表中的字段.常量值.表达式.函数2.查询的 ...

  6. java基础_单例模式

    java开发实战经典 --单例模式 从CSDN以及博客园的相关文章学习的,摘做笔记. “java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例.饿汉式单例.登记式 ...

  7. centos使用--zsh

    目录 1 切换到zsh 1.1 查看系统当前的shell 1.2 查看bin下是否有zsh包 1.3 安装zsh包 1.4 切换shell至zsh 2 安装oh-my-zsh 2.1 oh-my-zs ...

  8. 介绍 Active Directory 域服务 (AD DS) 虚拟化

    TechNet 库 Windows Server Windows Server 2012 R2 和 Windows Server 2012 服务器角色和技术 Active Directory Acti ...

  9. 【Python Selenium】简单数据生成脚本

    最近因工作需要,写了一个简单的自动化脚本,纯属学习,顺便学习下selenium模块. 废话不多说,直接上代码!! 这里一位大神重写了元素定位.send_keys等方法,咱们直接进行调用. 适用Pyth ...

  10. day05_06 continue语句、while循环

    输入满3次跳出,然后留一句话 for i in range(3): username = input("Username:") password = input("Pas ...