单线程 import time beginTime = time.time() for a in range(10): print(a) time.sleep(1) shijian = time.time() - beginTime print(shijian) #10.000571966171265 我们可以看到,上面这段代码就是纯正的单线程,一条道走到黑,讲究先后,所以花了10秒多 多线程 毕竟等待是让人心烦的,有什么方法能不这么耗时间啊,有啊,主角登场,欢迎多线程,那多线程做了一件什么事呢…
简单版 import queue import threading class ThreadPool(object): def __init__(self, max_num=20): self.queue = queue.Queue(max_num) for i in range(max_num): self.queue.put(threading.Thread) def get_thread(self): return self.queue.get() def add_thread(self)…
了解相关概念之前,我们先来看一张图 进程: 优点:同时利用多个cpu,能够同时进行多个操作 缺点:耗费资源(重新开辟内存空间) 线程: 优点:共享内存,IO操作时候,创造并发操作 缺点:抢占资源 通过对比,我们可以得出: 由于计算多用到cpu,所以多进程适合计算密集型 由于IO操作不用到cpu,所以多线程适合IO密集型 进程不是越多越好,cpu个数=进程个数 线程也不是越多越好,具体案例具体分析,请求上下文切换耗时 计算机中执行任务的最小单位:线程 进程和线程的目的都是提高效率 另外,GIL全局…
注:技术尚浅,时间匆忙,如有错误或者不当之处值得商榷的,请留言,吾必思而改之. 第一篇 :Python基础- 安装/变量/输入/及循环语句使用 第二篇:  Python基础- 常用数据类型 第三篇: Python基础- 集合,文件操作 和 函数详解 第四篇: Python基础- 装饰器-迭代器-生成器-内置函数-json/pickle 第五篇: Python基础- 常用模块的使用 第六篇: Python基础- 面向对象编程基础 第七篇: Python基础- 面向对象编程进阶 第八篇: Pytho…
在之前的文章中已经为大家介绍了java并发编程的工具:BlockingQueue接口.ArrayBlockingQueue.DelayQueue.LinkedBlockingQueue.PriorityBlockingQueue.SynchronousQueue.BlockingDeque接口.ConcurrentHashMap,本文为系列文章第九篇. CountDownLatch是一种线程同步辅助工具,它允许一个或多个线程等待其他线程正在执行的一组操作完成.CountDownLatch的概念在…
简要: paramiko模块 进程与线程 python GIL全局解释器锁 一.PARAMIKO模块 实现远程ssh执行命令 #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:wanghui import paramiko ssh = paramiko.SSHClient() #创建ssh对象 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在know_host…
内容提要 paramiko模块 进程.与线程区别 python GIL全局解释器锁 多线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 多进程 语法 join 进程Queue 进程Pipe 进程Manager 进程同步 进程池 1.paramiko模块 安装:若已安装pip则:pip install paramiko 利用paramiko实现ssh,返回命令结果 #! /usr/bin/env python3 # -…
一.正则表达式基础 1.正则表达式介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持的语法通常是不常用的部分.如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了. 下图展示了使用正则表达式进行匹配的流程: 正则表达式的大致匹…
一.运算符 1.算数运算: 算数运算符相信大家都不陌生吧,尤其是加减乘除,好!那我就带着大家看看最后三个,这三个到底是干什么玩意的? %,取两数相除的余数,看图: **,x的多少次幂,看图: //,取整除,你可以理解为向下取整,看图: 2.比较运算: 注意:当为一个等号时,多为赋值,两个等号为比较,另外不等于常用是!= 3.赋值运算: 4.逻辑运算: 逻辑运算符里,and和or好理解,那我就讲一下not:这家伙就是唱反调的--看图 5.成员运算: 成员运算符,从字面上意思去理解,问谁是不是某组织…
变量及数据类型 Numbers数字分为:int整型,long长整型,float浮点型,complex复数 String字符串由数字.字母.下划线组成的一串字符,用于表示文本的数据类型 bool布尔型:True,False,用于做判断(True实际值是1,False实际值是0) List列表,支持字符,数字,字符串以包含列表(即嵌套),用[]标识,有序对象 Tuple元祖,用()标识,不能二次赋值,可以理解成不可变的列表(只读列表),有序对象 Dict字典,用{}标识,由索引(key)和它对应的值…
python操作Mysql,很方便,使用的MySQLdb的库,基本的操作如下: 查询: try: conn = MySQLdb.connect(host=self.ip, user=self.username,passwd=self.password, db=self.dbname, port=self.port) cur = conn.cursor() cur.execute(sql) rows = cur.fetchall() data = rows except MySQLdb.Error…
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数  函数与函数式编程 1.面向对象: 华山派---->类----> class2.面向过程: 少林派---->过程---->def3.函数式编程:逍遥派---->函数---->def 函数与函数式编程 1.介绍: 在过去的十年间,大家广为熟知的编程方法无非两种:面向对象和面向过程,其实,无论哪种,都是一种编程的规范或者是…
一.三元运算 if True: name='a' else: name='b' #上面的代码用三元运算表示: name="a" if True else "b" 二.类中方法查看 Python中一切事物都是对象,对象由类创建 type 查看对象类型 dir(类型名)  查看类中提供的所有功能 help(类型名)    查看类中提供的功能详细 help(类型名.方法名) 查看类中某功能的详细 三.类型常用功能 1.整形 abs(x) #返回绝对值 x+y,x-y,x*…
一.第一句python代码 1.python执行过程:1.加载内存-词法分析-语法分析-编译-执行 2.创建hello.py文件,输入内容 #!/usr/bin/env python print "Hello" 执行 hello.py 文件:python hello.py 3.解释器:上面执行hello.py 脚本时已明确指出用python解释器来执行,如果想要像shell脚本一样执行就要在开头指定解释器 二.编码 1.python解释器在加载 .py 文件中的代码时,会对内容进行编码…
进程 定义:进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的基本单位 线程…
1.安装之前我们要先去python的官网下载python的安装包 下载地址:https://www.python.org/downloads/ Python 官网有两个版本一个是3.5.2(最新版)一个是2.7.12版本(老版本) 未来实际中都会使用python3.5的版本,2.7的版本是一个过度的版本官网会维护到2020年,所有安装教程是针对3.5的版本,其实2.7和3.5的安装都是相同的 2.安装 PS: Add Python 3.5 to PATH    #这个选项的意思是安装好Pytho…
pets = ['dog','cat','dog','goldfish','cat','rabbit','cat'] print(pets) for pet in pets: print(pet) #------------------------------------------ pets = ['dog','cat','dog','goldfish','cat','rabbit','cat'] print(pets) while pet in pets: print(pet) 上述代码都想…
守护进程 1.守护子进程 主进程创建守护进程  其一:守护进程会在主进程代码执行结束后就终止  其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children 注意:进程之间是互相独立的,主进程代码运行结束,守护进程随即终止 我们来看一个例子 from multiprocessing import Process import os,time,random def task()…
模块是把程序代码和数据封装的Python文件,也就是说,每一个以扩展名py结尾的Python源代码文件都是一个模块.每一个模块文件就是一个独立的命名空间,用于封装顶层变量名:在一个模块文件的顶层定义的所有的变量名(函数名也是一个变量名),称作模块的属性.导入模块给予了对模块的全局作用域中的变量名的读取权,也就是说,在模块导入时,模块文件的全局作用域变成了模块内对象的命名空间. 导入一个模块之后,可以使用模块中定义的属性,例如,在模块moduleA中导入一个模块moduleB,那么moduleB就…
一.python的介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. (龟叔:2005年加入谷歌至2012年,2013年加入Dropbox直到现在,依然掌握着Python发展的核心方向,被称为仁慈的独裁者). 最新的TIOBE排行榜,Python赶超PHP占据第4, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言.…
1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ? 1 names = ['Alex',"Tenglan",'Eric'] 通过下标访问列表中的元素,下标从0开始计数 ? 1 2 3 4 5 6 7 8 >>> names[0] 'Alex' >>> names[2] 'Eric' >>> names[-1] 'Eric' >>> names[-…
这里要说的是Hibernate的关联关系的级联操作,使用cascade属性控制. 依旧用部门和员工举例.多个员工相应一个部门(多对一关联关系) 员工类:Employee.java package cn.itcast.hibernate.domain; public class Employee { private int id; private String name; private Department depart; public int getId() { return id; } pu…
final关键字:final:最终,终极 final:作用:修饰类,变量,方法.成员变量的访问 1.final修饰变量: final修饰局部变量: 把这个局部变量 变成一个厂里,这个厂里只能被赋值一次 final修饰成员变量: 要求这个成员变量 在创建对象之前必须初始化 所以final修饰的成员变量 第一直觉赋值 第二构造方法赋值 但是也只能赋值一次 2.final修饰的类:(太监类) ,不能被子类继承(String) final修饰的方法:(子类不能重写) 静态代码块:通常写到成员位置 *  …
''' 数据类型 数值 int: 字符串转int,只能转纯数字组成的字符串 小数,去掉小数部分 bool,true 1 false 0 float: 字符串转float,要么是纯数字的字符串,要么是纯小数 整型,在整数后加.0 bool, True 1.0 false 0.0 bool 字符串,空字符串("",'')为false,其他为真 整型,0 为false 其他为true float 0.0 为false,其他为true 二进制 0b 八进制0o 十六进制0x 字符串 列表:格式…
一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个人写代码的风格不同,这些不同的风格就代表了不同的流派 如果把Python的基本语法比作武术的基本功那么不同的编程风格就好比不同的武林门派 虽然大家风格不同,但是都可以完成你的编程需求,Python是一门面向对象的编程语言,但是到目前为止,你从未接触面向对象编程,然而你已经可以解决很多问题了,在Python…
什么是进程(process)? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于,程序是指令的集合,它是进程运行的静态描述文本:进程是程序的一次执行活动,属于动态概念. 什么是线程(thread)? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. 进程与线程的区别? 线程共享内存空间,进程…
我们之前已经初步了解了进程.线程与协程的概念,现在就来看看python的线程.下面说的都是一个进程里的故事了,暂时忘记进程和协程,先来看一个进程中的线程和多线程.这篇博客将要讲一些单线程与多线程的基础,它们在执行中对cpu资源的分配,帮助还不了解多线程的小伙伴一招get写多线程代码的技能.已经了解的请自行跳过. 单线程         从上面的图中我们可以看出,这段代码执行了10秒多,这就是一段单单线程的一条道走到黑的代码,它们顺序执行,该sleep的时候就sleep,该print的时候就pri…
Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy   Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Me…
Python 基础之 线程与进程 在前面已经接触过了,socket编程的基础知识,也通过socketserver 模块实现了并发,也就是多个客户端可以给服务器端发送消息,那接下来还有个问题,如何用多线程与多进程来实现并发呢?今天就来了解一下这方面的知识. 一.进程与线程的概念介绍 多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务.Linux.windows就是支持多任务的操作系统,比起单任务系统它的功能增强了许多. 运行一个任务就需要cpu去处理,那同时运行多个任务…
第一部分(python基础篇)80题 为什么学习Python?==*== # 1. python应用于很多领域,比如后端,前端,爬虫,机器学习(人工智能)等方面,几乎能涵盖各个开发语言的领域,同时它相对于其他语言而言,简洁. 通过什么途径学习的Python?==*== # 通过自学,网上看视频资料,网上买书的方法学习 Python和Java.PHP.C.C#.C++等其他语言的对比?==*== ''' python 1. 简单----Python是一种代表简单主义思想的语言.阅读一个良好的Pyt…