随笔分类 - Python
摘要:windows下设置JupyterNotebook默认目录 [toc] 生成配置文件 假设你己经在windows环境变量中设置好了jupyter notebook,则打开cmd,在cmd中输入 运行,如下图: 生成jupyter notebook的配置文件,路径也会显示出来。 设置默认工作目录 到提
阅读全文
摘要:pip更新及Requirement already up to date解决方法 文:铁乐与猫 2018 9 11 更新命令 将pip更新到最新版本 Anaconda更新命令为 Requirement already up to date 在pycharm的虚拟环境中,特别容易出现运行更新pip的命
阅读全文
摘要:* Flask
* 特点是小而轻,原生组件几乎为0
* Flask 的目标是保持核心简单而又可扩展。
* 快速,三行代码就能做到开启服务,六行代码显示web页面hello word
* 缺点是组件大部分来源于第三方
* 如flask-admin、flask-session
* 会造成大版本更新后,组件兼容的问题,组件更新速度因此慢。
* 属于短小精悍型框架。
* 结构方面,我个人认为像是搭积木。原生组件虽然少,但第三方的组件非常全面。
* Flask 可以变成你任何想要的东西,一切恰到好处,由你做主。
* 常用于小型应用和快速构建应用,但其强大的第三方库也足以支撑起大型web应用。
阅读全文
摘要:* 在开始菜单中找到anaconda3的文件夹,一般我们会用到
* Anaconda Navigator
* Jupyter Notebook
* Spyder
阅读全文
摘要:因为环境或学习的需要,我们可能需要在服务器上安装多个python版本,安装一个更新的python版本后,使用软链来进行共存。
这个时候需要进行源码编译安装。
当然后续开发项目可以直接跑在虚拟环境下隔离开来,就不再需要在服务器上安装多个不同版本的包了
阅读全文
摘要:由于opensuse包管理安装的是python2.7,而最近我又用编译安装了python3。
之后使用virtualenv虚拟环境指定创建python3版本的隔离环境时就出现了错误,报缺少zlib模块。
阅读全文
摘要:Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是指:
M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
T 代表模板 (Template):负责如何把页面展示给用户(html)。
V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。
除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:
阅读全文
摘要:http协议简介
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,
是用于万维网**服务器与本地浏览器**之间传输超文本的传送协议。
HTTP是一个属于应用层的面向对象的协议,HTTP协议工作于客户端-服务端架构。
浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器根据接收到的请求后,向客户端发送响应信息。
阅读全文
摘要:Web应用程序顾名思义,就是一种可以通过Web访问的应用程序,
Web应用的最大特点是用户只需要有网络和浏览器,不需要再安装其他软件就可顺利通过web访问到程序。
WEB应用程序一般是B/S模式(浏览器端/服务器端)。
Web应用程序首先是“应用程序”,和用标准的程序语言,如java,python等编写出来的程序没有什么本质上的不同。
而在网络编程的意义下,浏览器是一个socket客户端,服务器是一个socket服务端。
阅读全文
摘要:问题1: 请问如何修改以下python代码,使得下面的代码调用类A的show方法? 答:这道题的考点是类继承,只要通过__class__方法指定类对象就可以了。修改如下,其实就是只补充了一行 代码: 问题2 :请问如何修改以下python代码,使得代码能够运行? 答:此题考察的是方法对象,为了能让对
阅读全文
摘要:IO模型介绍
* blocking IO 阻塞IO
* nonblocking IO 非阻塞IO
* IO multiplexing IO多路复用
* signal driven IO 信号驱动IO
* asynchronous IO 异步IO
阅读全文
摘要:协程:是单线程下的并发,又称微线程,纤程。
英文名Coroutine。
一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。
阅读全文
摘要:concurrent.futures模块提供了高度封装的异步调用接口
ThreadPoolExecutor:线程池,提供异步调用
ProcessPoolExecutor: 进程池,提供异步调用
阅读全文
摘要:信号量 semaphore 允许统一时刻n个线程执行这段代码
事件 event 有一个内部的事件来控制wait的行为且控制的是所有的线程
条件 condition 有一个内部的条件来控制wait的行为,可以逐个或者分批次的控制线程的走向
阅读全文
摘要:加锁会让运行变成串行,而在start之后立即使用join,不用加锁了也是串行的效果。那么为什么使用加锁呢?
在start之后立刻使用jion,也会将100个任务的执行变成串行,最终n的结果是0,也是安全的,
但问题是start后立即join:任务内的所有代码都是串行执行的,
而加锁,只是加锁的部分即修改共享数据的部分是串行的,
单从保证数据安全方面,二者都可以实现,但很明显是加锁的效率更高.
阅读全文
摘要:线程的出现
60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端,一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程;二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。
因此在80年代,出现了能独立运行的基本单位——线程(Threads)。
注意:进程是资源分配的最小单位,线程是CPU调度的最小单位.
每一个进程中至少有一个线程。
阅读全文
摘要:锁 —— multiprocess.Lock (进程同步)
之前我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发处理,
但是它们之间的运行没有顺序,一旦开启也不受我们控制。
尽管并发编程能让我们更加充分的利用IO资源,但是也会带来新的问题。
当多个进程使用同一份数据资源的时候,就会引发数据安全或顺序混乱问题。
遇到数据、安全比速度重要的场景,我们就需要将进程变回受同步控制。
阅读全文
摘要:进程之间的数据共享
基于消息传递的并发编程是大势所趋,
即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据。
这样极大地减少了对使用锁和其他同步手段的需求,还可以扩展到分布式系统中。
但进程间应该尽量避免通信,即便需要通信,也应该选择进程安全的工具来避免加锁带来的问题。
以后我们会尝试使用数据库来解决现在进程之间的数据共享问题。
阅读全文
摘要:【进程】
运行中的程序就是一个进程。
所有的进程都是通过它的父进程来创建的。
因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程。
多个进程可以实现并发效果,程序中存在多个进程的时候,在某些时候,就会让程序的执行速度变快。
以之前所学的知识,并不能实现创建进程这个功能,所以就需要借助到python中强大的模块--multiprocess。
阅读全文
摘要:验证客户端链接的合法性
如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂,
那么可以利用hmac+加盐的方式来实现。
SocketServer是标准库中的一个高级模块(python3.x中重命名为socketserver),
它的目标是简化很多样板代码,它们是创建网络客户端和服务器所必需的代码。
阅读全文

浙公网安备 33010602011771号