安装 1.tomorrow安装,用pip可以直接安装 pip install tomorrow 单线程 1.以下案例是单线程时候跑的情况,在下载图片的时候很耗时. # coding:utf-8 from bs4 import BeautifulSoup import requests import os import time # 当前脚本所在的目录 cur_path = os.path.dirname(os.path.realpath(__file__)) def get_img_urls()…
Numba:高性能计算的高生产率 在这篇文章中,笔者将向你介绍一个来自Anaconda的Python编译器Numba,它可以在CUDA-capable GPU或多核cpu上编译Python代码.Python通常不是一种编译语言,你可能想知道为什么要使用Python编译器.答案当然是:运行本地编译的代码要比运行动态的.解译的代码快很多倍.Numba允许你为Python函数指定类型签名,从而在运行时启用编译(这就是“Just-in-Time”,即时,也可以说JIT编译).Numba动态编译代码的能力…
Tornado是一个基于python的web框架,xxxxx 安装 python -m pip install tornado 第一个Tornado程序 安装完毕我们就可以新建一个app.py文件,放入下面的代码直接运行就可以了,然后在浏览器访问127.0.0.1:8888 import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.writ…
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:清风化煞_   正文 新手注意:如果你学习遇到问题找不到人解答,可以点我进裙,里面大佬解决问题及Python教.程下载和一群上进的人一起交流! 1.先附上没有用多线程的包图网爬虫的代码 import requests from lxml import etree import os import time start_time = time.time()#记录开始时间…
1. 简介 本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去.用addTest()方法来加载我们测试用例到suite中去和利用discover()方法去加载一个路径下所有的测试用例. 2. addTest()方法 这里首先介绍unittest下addTest()方法来加载测试用例到测试套件中去.为了演示效果,我在前面文章的脚本基础上,新建了一个测试脚本,这个测试脚本有一个测试用例,加上前面的测试脚本,一…
1. NumPy的基础使用涵盖如下内容: 数据类型 数组类型 类型转换 创建数组 数组索引 数组切片 改变维度 2. NumPy数组对象: NumPy中的ndarray是一个多维数组对象,该兑现共有两部分组成: 实际的数据 描述这些数据的元数据. 大部分的数组操作仅仅修改元数据部分而不改变底层的实际数据(其实就是一种浅拷贝理解). ndarray支持更高的维度,因为数组一般是同质的,所以数组所有的元素类型必须是一致的. NumPy与Python一样数组的下标都是从0开始的. 2.1 numpy.…
1. 魔法方法是什么? 魔法方法(Magic Method)是Python比较独特的应用,它可以给你的类增加特殊的方法,如果你的对象实现了(重载),这些方法中的某一个,就会被Python所调用.正如装饰器类似,是对类/函数部分的提炼(装饰器是对关键功能部分的封装).一般情况下,是对类中方法和属性一种提炼. 2. 魔法方法详细解释: 前面我们用过__init__,__repr__,__str__等魔法方法,我们在这里做一个总结,查遗补漏,由于这个位置在Python中比较松散的表示.这里做一个分别的…
1. 概述: 我们在前面用了很多的装饰器这个工具的方法.这个位置要系统的讲一下装饰器. 1.2 为什么需要装饰器. 装饰器本质是一个Python函数,它可以让其他函数在不需要任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓存.权限校验等场景.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重要. 概括的讲,装饰器的作用就是为已经存在的函数或端详添加额外的功能. 2…
说道这里我们需要稍微暂停一下.前面我们说到了类是作为一个对象存放容器.这个容器里面有属性和方法.最好的理解类的方式就是把类想想成一个容器. 然后构造了一个析构函数和构造函数,然后又对object和self进行了解释,最后又说了一下重写.我们发现类作为一个存放对象的容器,其类也是一个对象. 类也有自己的__main__,__init__,__class__等属性.我们发现了,越来越多的时候,在Python里面用了很多下划线来表示这些意思.下划线分双下划线和单下划线两种,一共又存在5中组合,这5中组…
一.RDBMS relational database management system 关系型数据库引入 1.数据库的意义 更有效和合理的存储读取数据的一种方式 关系模型基础上的数据库 ->使用集合代数等数学方法来处理数据库中的数据 2.一些常见的数据库 2.1 非关系型数据库 如redis 表之间没有相应的联系 2.2 关系型数据库 oracle.mysql.(mysql也oracle现在是同一家公司的,oracle收费,mysql开源免费) sql server microsoft ps…
前言 小伙伴a,b,c围着吃火锅,当菜上齐了,请客的主人说:开吃!,于是小伙伴一起动筷子,这种场景如何实现 Event(事件) Event(事件):事件处理的机制:全局定义了一个内置标志Flag,如果Flag值为 False,那么当程序执行 event.wait方法时就会阻塞,如果Flag值为True,那么event.wait 方法时便不再阻塞. Event其实就是一个简化版的 Condition.Event没有锁,无法使线程进入同步阻塞状态. Event() set(): 将标志设为True,…
1. 读写文件(基本) savetxt.loadtxt i2 = np.eye(2) print(i2) np.savetxt(r"C:\Users\Thomas\Desktop\eye.txt",i2) c,v = np.loadtxt(r"C:\Users\Thomas\Desktop\data.csv",delimiter=',',usecols=(6,7),unpack=True) print(c,v) #[336.1 339.32 345.03 344.3…
1. IDE说明: 所有的案例用Anacoda中的Jupiter工具进行交互式讲解. 2. 版本和安装: NumPy从如下网站安装:http://sourceforge.net/projects/numpy/files. 我们通过环境查看相关的版本.如果电脑上安装了Anaconda的话这些版本基本上都是最新版本的. 如果Anaconda的库不是最新的可以通过Prompt进行安装和更新.可以参照如下博客,非常简单.https://blog.csdn.net/xiexu911/article/det…
1. 前言: 本部分会讲解在Python环境下进行数值运算.以NumPy为核心,并讲解其他相关库的使用,诸如Matplotlib等绘图工具等. C.C++和Forttran等变成语言各有各的优势,但是他们不是交互式语言,并且被很多人认为过于复杂.常见的商业产品还有Matlab.Maple和Mathematica.这些产品提供了强大的脚本语言,但和通用编程语言比起来,功能依然有限.另外还有一些类似于Matlab的开源工具,如R.GNU Octave和Siclab.显然,作为编程语言,他们都不如Py…
1.多任务的实现原理: 通常我们会设计Mater-Workder模式,Master负责分配任务,Worker负责执行任务,因此多任务环境下,通常是一个Master,多个Worker 2.多进程: 主进程就是Master,其他进程就是Worker 稳定性高:一个子进程崩溃了,不会影响主进程和其他子进程,当然主进程挂了,所有进程就全挂了,但是Master进程只负责分配任务,挂掉的概率低. 创建进程的代价大:在UNIX/LINUX系统下,用fork调用还可以,在Windows下创建进程开销巨大. 操作…
1. 线程概述: 在一个进程的内部,要同时干多件事情,就需要同时运行“多个子任务”,我们把进程内的这些“子任务”叫做线程.也就说线程是进程成的子任务. 线程通常叫做情景的进程.线程是通过向内侧控件的并发执行的多任务.每一个线程都共享一个进程的资源. 线程是最小的执行单元,而进程至少由一个线程组成.如何调度进程和线程,完全由操作系统决定,用户程序不能自己决定什么时候执行.执行多长时间. 线程有两个模块: _thread模块:低级模块(现在很少用了) threading模块:高级模块,是对_thre…
1. 多任务原理: 现代操作系统,像win,max os x,linux,unix等都支持多任务. * 什么叫做多任务? 操作系统可以同时运行多个任务. * 单核CPU实现多任务原理? 操作系统轮流让各个任务交替执行,比如QQ执行2us,切换到微信,再执行2us,在切换到其他应用,再执行2us... ...,如此交替往复.表面上看每个任务反复执行下去,但是CPU调度执行速度太快了,导致我们感觉就像所有任务都同时执行一样. * 多核CPU实现多任务原理? 真正的并行执行多任务只能在多核CPU上实现…
1.先叙述静态方法: 我们知道Python调用类的方法的时候都要进行一个实例化的处理.在面向对象中,一把存在静态类,静态方法,动态类.动态方法等乱七八糟的这么一些叫法.其实这些东西看起来抽象,但是很好理解.这里面有一个难点就是静态方法的理解,我们先叙述这个概念. 比如在C#语言中,我们一般在在一个类前面加上类似于staci这样的关键字 public 类名{ static void 方法(){ } } 一般这个时候方法可以直接用“类名.方法名”的方式直接调用类中的方法.其实这种方法叫做直接引用的方…
1. 文档检测: 我们观察官方的函数编写的时候会在函数或者类当中有些类的备注,这些备注叫做文档.当我们在编写函数的时候,可以去显示这些文档.因此我们可以用这个文档来进行检测.另外我们还需要导入doctest的库. 实例: import doctest # doctest模块可以提取注释中的代码去执行 # doctest严格按照Python交互模式的输入提取 def mySum(x,y): ''' 求两个数的和 get The Sum from x and y :param x: firstNum…
1. map()函数: 原型:map(fn,lsd) 参数1是函数 参数2是序列 功能:将传入的函数一次作用在序列中的每一个元素.并把结果作为一个新的Iterator返回.其实map函数就是一个for循环查找.需要functools库. 图示: 实例1: # 实例1:from functools import reduce# python内置的map函数 def chr2int(str): ,,,,,,,,,}[str] # return后面哪一窜表示将单个字符转换成对应的字面量整数,按照键去取…
1. Label控件: 说明:标签控件,可显示文本 图示1: 实例1: import tkinter # 创建主窗口__编程头部 win = tkinter.Tk() # 设置标题 win.title("Thomas的窗口") # 设置大小和位置 win.geometry("400x400+1500+500") #格式:400x400表示大小,200和0表示位置 # Label:标签控件,可以显示文本 # win:父窗体 # text:显示的文本内容 # width…
1. GUI概述: GUI全称为Graphical User Interface,叫做图形用户界面,也是一种交互方式(Interaction).早期计算机使用的命令行界面(command-line interface,简称CLI),图形界面对于用户来说在视觉上更易于接受.然而这种界面若要通过在显示屏的特性位置,以“各种美观而不单调的视觉消息“提示用户”状态的改变”,势必比简单的消息呈现上更有优势. 2.Python支持常用的GUI工具包: Tkinter 使用Tk平台 很容易得到 半标准wxpy…
1. 限制访问的问题: 如果学过C# 语言的我们可以知道C# 语言有get和set方法.我们之前想要获取父类中的私有变量,只能通过写一个set和get的函数进行访问或者通过类生成的新关键字来访问私有属性(_类名__私有变量).其实Python也给我们提供了一种get和set的方法.其内容就是一种装饰器的作用,采取@property和@变量名.setter的方式. 举例说明1: # 属性直接对外暴露 # 不安全,没有熟虑过滤 # 使用限制访问的话,需要些set和get方法. from types…
1. 重载: overloading:就是将函数重新定义一遍. 1.1 __str__( )和__repr__( )的重载: 格式: __str__( ):在调用print打印对象时自动调用,是给用户用的,是一个描述对象的方法. __repr__( ):给机器用的,在Python解释器或者在cmd的黑屏终端里面输入,注意在没有str时,且有repr,str = repr,其实本事就是打印类本身想要实现的属性. 举例说明1: class Person(object): def __init__(s…
1. 构造函数: 为什么要有构造函数? 打一个比方:类的创建就是好比你创建了好了一种格式的房间,你租给上一个住户的后,里面会对方很多“垃圾”和不规则的物品摆放.构造函数就是下一个住户再使用的时候进行物品的初始化摆放,防止下一个用户再使用的时候会出现没有初始化物品错放的错误等. 构造函数的格式: __init__( ): 注意:在使用创建对象的时候会自动调用,构造函数用于初始化类实例的状态.如果不显式的创建构造函数,默认会自动添加一个构造函数.其实由于没有本身都会带上这个构造函.但是还是要写上比较…
1. 设计一个类: 设计一个类主要从三个方面进行考虑: 第一:类名:类名要见名知意.首字母大写. 第二:属性. 第三:方法. 备注:在Python中有些东西并不是绝对化的事情,有些根据Python社区里面有些约定俗称的规定,在Python这种动态语言当中随处可见,比如像__._单双下划线的使用就是这个问题的一个体现. 2. 创建一个类: 类:一种数据类型,本身并不占内存空间,根据所学过的number.string.boolean等类似,用类创建实例化对象. 格式: class 类名(父类列表):…
1. 软件编程的实质: 软件编程就是将我们的思维转变成计算机能够识别语言的一个过程.重要的是思想,代码技术反而次要.因此思想也是最难的,突破固定的思想是关键 2. 什么是面向过程: * 自上而下顺序执行,逐步求精. * 程序结构是按照功能划分成若干个基本模块,这也是一种树状结构. * 各个模块之间的关系尽可能简单,在功能上又相对独立. * 每一个模块内部结构是由顺序.选择.循环三种基本结构. * 模块化实现的方法是使用子程序. * 程序流程是在写程序时就已经决定了. 3. 什么是面向对象? *…
感觉很详细:数据分析:pandas 基础 import pandas as pd import numpy as np import matplotlib.pyplot as plt dates = pd.date_range(', periods=3) # 创建 16 17 18 等六个日期 df = pd.DataFrame(np.random.randn(3,4), index=dates, columns=list('ABCD')) # 这是二维的,类似于一个表! # 通过 numpy…
一.ListView内容变化后,动态刷新的步骤(全局刷新): (1)更新适配器Adapter数据源:(不要使用匿名内部类) (2)调用适配器Adapter的刷新方法notifyDataSetChanged(): 二.ListView中的单个item的数据变化后,动态刷新步骤(局部刷新): 1.引言 有个下载模块,因为可能同时下载好几个数据,所以用的listview展示所有正在下载的内容.因为下载进度要实时更新,所以要不停的调用notifyDateSetChanged刷新数据.这样会不停的重新绘制…
今日内容 装饰器 推导式 模块[可选] 内容回顾 函数 参数 def (a1,a2):pass def (a1,a2=None):pass 默认参数推荐用不可变类型,慎用可变类型. def(*args,**kwargs):pass 注意:位置参数 > 关键字参数 面试题 函数可以做参数[知识点]. def func(arg): arg() def show(): pass func(show) 函数的参数传递的是什么?[内存地址=引用 or 值] v = [11,2,33,4] def func…