-
Python中的协程是什么
协程 在python GIL之下,同一时刻只能有一个线程在运行,那么对于CPU计算密集的程序来说,线程之间的切换开销就成了拖累,而以I/O为瓶颈的程序正是协程所擅长的: Python中的协程经历了很长的一段发展历程。其大概经历了如下三个阶段: 1.最初的生成器变形yield/send; 2.引入@asyncio.coroutine和yield from; 3.在最近的Python3.5版本中引入a…- 374
- 0
-
Python如何进行线程切换
线程切换 条件对象能让一个线程 A 停下来,等待其他线程 B ,线程 B 满足了某个条件后通知(notify)线程 A 继续运行。线程首先获取一个条件变量锁,如果条件不足,则该线程等待(wait)并释放条件变量锁,如果满足就执行线程,也可以通知其他状态为 wait 的线程。其他处于 wait 状态的线程接到通知后会重新判断条件。 无论是多进程还是多线程,只要数量一多,效率肯定上不去,为什么呢? 我…- 629
- 0
-
Python中进程与线程的区别是什么
Num01–>线程 线程是操作系统中能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 一个线程指的是进程中一个单一顺序的控制流。 一个进程中可以并发多条线程,每条线程并行执行不同的任务。 Num02–>进程 进程就是一个程序在一个数据集上的一次动态执行过程。 进程有以下三部分组成: 1,程序:我们编写的程序用来描述进程要完成哪些功能以及如何完成。2,数据集:数据…- 381
- 0
-
Python中的线程和多线程是什么
一、线程的概念 一个进程里面至少有一个控制线程,进程的概念只是一种抽象的概念,真正在CPU上面调度的是进程里面的线程,就好比真正在地铁这个进程里面工作的实际上是地铁里面的线程,北京地铁里面至少要有一个线程,线程是真正干活的,线程用的是进程里面包含的一堆资源,线程仅仅是一个调度单位,不包含资源。 什么时候需要开启多个线程:一个进程里面的多个线程共享这个进程里面的资源,因此如果多个任务共享同一块资源的…- 346
- 0
-
Python数学建模三剑客之Scipy
三剑客之Scipy 前面已经说过,最初的numpy其实是scipy的一部分,后来才从scipy中分离出来。scipy函数库在numpy库的基础上增加了众多的数学、科学以及工程计算中常用的库函数。例如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等等。由于其涉及的领域众多,我之于scipy,就像盲人摸大象,只能是摸到哪儿算哪儿。 一、插值 数据插值是数据处理过程中经常用到的技术,常用的插…- 517
- 0
-
Python数学建模三剑客之Matplotlib
三剑客之Matplotlib matplotlib 是python最著名的绘图库,它提供了一整套和Matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。matplotlib 可以绘制多种形式的图形包括普通的线图,直方图,饼图,散点图以及误差线图等;可以比较方便的定制图形的各种属性比如图线的类型,颜色,粗细,字体的大小等;它能够很好地支持一部…- 1.2k
- 0
-
Python数学建模三剑客之Numpy
三剑客之Numpy numpy是一个开源的python科学计算库,包含了很多实用的数学函数,涵盖线性代数、傅里叶变换和随机数生成等功能。最初的numpy其实是scipy的一部分,后来才从scipy中分离出来。 numpy不是python的标准库,需要单独安装。假定你的运行环境已经安装了python包管理工具pip,numpy的安装就非常简单: pipinstallnumpy 一、数组对象 ndar…- 1.1k
- 0
-
盘点Redis常用操作
Redis简介 Redis是完全开源免费的高性能Key-Value数据库,有以下几个特点: ·Redis支持数据持久化,可以将内存中的数据保存至磁盘中,重启可以再次加载进行使用。 ·Redis不仅仅支持简单的Key-Value类型的额数据,同时还提供list,set,zset(有序集合),hash等数据结构的存储。 ·Redis支持数据的备份,即master-slave模式的数据备份。 Redis…- 358
- 0
-
python魔术方法详解
准备工作 为了确保类是新型类,应该把 _metaclass_=type 入到你的模块的最开始。 classNewType(Object): mor_code_here classOldType: mor_code_here 在这个两个类中NewType是新类,OldType是属于旧类,如果前面加上 _metaclass_=type ,那么两个类都属于新类。 构造方法 构造方法与其的方法不一…- 286
- 0
-
进一步认识python线程池
线程池的概念是什么? 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是 如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些 很耗资源的对象创建和销毁。如何利用已有对象来服务就是一个需要解决的关键问题,其实这就是一些"池化资源"…- 258
- 0
-
手把手教你使用sublime搭建python开发环境
sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text的主要功能包括:拼写检查,书签,完整的 Python API,Goto功能,即时项目切换,多选择,多窗口等等。 Step1:安装python和sublime Step2:给sublime安装package control,安装参见: 官网 S…- 307
- 0
-
手把手教你用Python PIL模块随机生成中文验证码
PIL是Python Imaging Library的简称,PIL是一个Python处理图片的库,提供了一系列模块和方法,比如:裁切,平移,旋转,改变尺寸等等。已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。 PIL有如下几个模块:Image模块、ImageChops模块、ImageCrackCode模块、ImageDraw模块、ImageEnhance…- 236
- 0
-
一文读懂Python中__new__和__init__的区别与联系
__new__ 和 __init__ 的区别主要表现在: 它自身的区别; 在Python中新式类和老式类的定义。 __new__ 负责对象的创建,而 __init__ 负责对象的初始化。 __new__:创建对象时调用,会返回当前对象的一个实例 __init__:创建完对象后调用,对当前对象的一些实例初始化,无返回值 1. 在类中,如果__new__和__init__同时存在,会优先调用__new…- 249
- 0
-
深入理解python中的yield
yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法。 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: defaddlist(alist): foriinalist: yieldi+1 取出alist的每一项,然后把i + 1塞进去。然后通过调用取出每一项: alist=[1,2,3,4] forxinaddlist(alis…- 384
- 0
-
Python黑魔法之property装饰器详解
@property装饰器能把一个方法变成属性一样来调用,下面我们就一起来看看Python黑魔法@property装饰器的使用技巧解析 @property有什么用呢?表面看来,就是将一个方法用属性的方式来访问. 上代码,代码最清晰了. classCircle(object): def__init__(self,radius): self.radius=radius @property defarea…- 254
- 0
-
Python正则表达式findall函数详解
在写正则表达式的时候总会遇到不少的问题, 特别是在表达式有多个元组的时候。下面看下re模块下的findall()函数和多个表达式元组相遇的时候会出现什么样的坑。 代码如下 importre str="abcd" regex0=re.compile("((\w+)\s+\w+)") print(regex0.findall(str)) regex1=re.co…- 215
- 0
-
Python和单元测试那些事儿
我们来说说目前几个和测试有关的东西(全程 Python 3)。 Mock Mock是个好东西呀,遇到测试中出现的不可预知的或者不稳定因素,就用 Mock 来代 替。例如查询数据库(当然像目前我们用的MongoDB,由于特别灵活,可以直接在代码里 把相应的collection替换掉),例如异步任务等。举个例子: importlogging fromunittest.mockimportMock lo…- 233
- 0
-
使用Python创建简单的HTTP服务器
如果需要一个简单的Web Server,而不是安装那些复杂的HTTP服务程序,比如:Apache,Nginx等。那么可以使用Python自带的包完成一个简单的内建 HTTP 服务器。于是,你可以把你的目录和文件都以HTTP的方式展示出来。 基本命令 python-mWeb服务器模块[端口号,默认8000] 这里的“Web服务器模块”有如下三种: BaseHTTPServer: 提供基本的Web服务…- 449
- 0
-
Python中lambda表达式的优缺点及使用场景
lambda表达式是什么? lambda 表达式是 Python 中创建匿名函数的一个特殊语法. 或称 lambda 语法本身为 lambda 表达式,而它返回的函数我称之为 lambda 函数。或者称为匿名函数。 Python 的 lambda 表达式允许在一行代码中创建一个函数并传递。 看下面的代码: website=["www.pythontab.com","b…- 220
- 0
-
详解Python标准库
操作系统接口 os 模块提供了大量和操作系统进行交互的函数: >>>importos >>>os.getcwd()#返回当前工作路径 'C:\\Python37' >>>os.chdir('/server/accesslogs')#改变当前工作路径 >>>os.system('…- 250
- 0
-
初学者必看的Python模块讲解
模块 如果你从 Python 解释器退出然后再进入它,你所做的定义(函数和变量)都会消失。因此,如果你想写某些更长的程序,你最好使用一个文本编辑器来为解释器准备输入,然后以这个文件作为输入来运行程序。这也被称为创建一个脚本。当你的程序变得更长,你也许会想将它分成几个文件方便管理。你也许还想在几个程序中直接使用函数而不用在每个程序中拷贝函数定义。 为了支持这种特性,Python 可以把定义放入一个文…- 264
- 0
-
一篇文章教你如何使用Python生成器
自从PEP 255引入生成器以来,它就是 Python 中重要的一部分. 生成器允许你定义一个有迭代器行为的函数. 它允许程序猿更快,更简单并且以一个干净的方式创建一个迭代器. 那么什么是迭代器呢,你或许会问? iterator迭代器是一个可以被迭代的(循环)对象。它可以抽象为一个装着数据同时有着可迭代对象的行为的容器。或许你已经每天在使用一些可迭代的对象:诸如字符串,列表,字典或其它名字的对象.…- 294
- 0
-
Python的高级特性:容易忽略的不可变类型
Python 中有一些容易忽略的不可变类型Str、Integer、None、Tuple #错误演示 In[45]:defdemo(lst=[]): ....:lst.append("hello") ....:returnlst ....: In[46]:demo() Out[46]:['hello'] In[47]:demo() Out[47]:['…- 196
- 0
-
深入理解Python的set和dict
dict常用操作 引言 clear(): 清空字典 copy(): 返回一个浅拷贝 fromkeys(): 将可迭代对象中的每一个元素作为key和同一个value拼成字典 get(): 根据key返回value,若无对应的键值对,则返回None,也可以指定默认返回值,和索引访问相比,不会产生异常。 items():返回一个dict_items类型,支持迭代,键值对以元组形式组织 setdefaul…- 279
- 0