- Python多线程 11-25
- Python连接器 11-25
- Python——模块 11-25
- 零基础Python初学者应该怎么去学习Python语 11-25
- Python简介 11-25
- python序列文章之python方法链 11-25
- Python沙箱 11-25
- 「python」Python+Crontab自动定时 11-25
- Python模块 11-25
- Python生成器 11-25
Python多线程
发布者: superzhang | 发布时间:2017-11-25要让Python程序实现多进程(multiprocessing),我们先了解操作系统的相关知识。
需要更多学习资料的童鞋,可以加群:516126034,群内每天会更新视频资料的哦。
Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。
子进程永远返回0,而父进程返回子进程的ID。这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程只需要调用getppid()就可以拿到父进程的ID。
Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中轻松创建子进程:
import os运行结果如下:
Process (876) start...由于Windows没有fork调用,上面的代码在Windows上无法运行。由于Mac系统是基于BSD(Unix的一种)内核,所以,在Mac下运行是没有问题的,推荐大家用Mac学Python!
有了fork调用,一个进程在接到新任务时就可以复制出一个子进程来处理新任务,常见的Apache服务器就是由父进程
Python连接器
发布者: superzhang | 发布时间:2017-11-25什么是连接器?
连接器是编程语言(我们特指Python)连接数据库的一个中间层,通常以第三方包的形式发布。因此,如果我们要使用Python来操作数据库,那我们必须安装相应的连接器。
Python 的MySQL连接器现在,流行的MySQL连接器有三种:
1、MySQLdb
使用C语言编写,性能很高
但是只支持Python2.x
近年来官方维护减慢
2、MySQL-Connector/Python/
MySQL官方连接器,功能适配更好
原生Python编写
对Python最新版的跟进不及时
3、MySQLClient
MySQLdb的一个分支,致力于解决Python3.x的兼容性问题
MySQLClient的维护更加活跃,Bug修复更加及时
使用方式和MySQLdb一模一样,因此不要与MySQLdb同时安装
安装连接器
首先我们来安装官方版的连接器,然后安装MySQLClient
1、安装MySQL-Connector-Python
MySQL-Connector-Python下载地址
选择适合自己的版本下载,并安装。
注意:x86表示32
Python——模块
发布者: superzhang | 发布时间:2017-11-25模块在Python中非常重要,以下是模块相关知识:
安装包管理工具pip,具体查看百度吧
一般来说,第三方库都会在Python官方的pypi.python.org网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索,比如Pillow的名称叫Pillow,因此,安装Pillow的命令就是:pip install Pillow,
如有下图报错,则需要切换为管理员权限
3.使用模块:
代码如下:
from PIL import Image
im = Image.open('test.png')
print(im.format, im.size, im.mode)
零基础Python初学者应该怎么去学习Python语言编程?
发布者: superzhang | 发布时间:2017-11-25对于完全没有编程经验的初学者,在学习python的时候,面对的不仅仅是python这门语言,还需要面临“编程”的一些普遍问题,比如:
从零开始,不知道从何入手,找了本编程教材发现第二章开始就看不懂了
缺少计算机基础知识,被一些教程略过的“常识性”问题卡住
遇到问题不知道怎么寻找解决方案
看懂语法之后不知道拿来做什么,学完一阵子就又忘了
缺少数据结构、设计模式等编程基础知识,只能写出小的程序片段。
首先要有信心。虽然可能你看了几个小时也没在屏幕上打出一个三角形,或者压根儿就没能把程序运行起来。但相信我,几乎所有程序员一开始都是这么折腾过来的。
选择合适的教程。有些书很经典,但未必适合你,可能你写了上万行代码之后再看它会比较好。我们有一个Python的学习交流Q群,四三二中间是八八二最后是九二零,平时提供大家一起学习Python,每天免费Python课程知识讲解。有问题相互交流。
写代码,然后写更
Python简介
发布者: superzhang | 发布时间:2017-11-25学习交流群:581935586
Python简介
介绍python之前,先来说一下编译型语言和解释型语言,面向对象和面向过程的区别:
计算机高级语言按照程序的执行方式可以分为编译型语言和解释型语言。
编译型语言:是指代码写好以后,需要使用专门的编译器进行编译,一次性将代码转换成特定的系统平台(操作系统)可以识别并运行的机器语言(机器码)。
优点:编译器一般会有预编译的过程对代码进行优化。在运行代码之前,对其编译只做一次,生成一个系统可直接运行的机器码文件,运行时不需要再次编译,所以编译型语言的程序执行效率高,可以脱离语言环境独立运行。
缺点:编译之后如果需要修改,就需要整个模块重新编译,编译的时候根据对应的运行环境(操作系统)生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
比如c, c++, Go, Swift, Object-C, Pascal...<
python序列文章之python方法链
发布者: superzhang | 发布时间:2017-11-25对python感兴趣的小伙伴可加群:526929231,大量学习资料在群文件里,欢迎大家加入
写这篇文章来由,有朋友说下面这样的代码看不懂。choice = raw_input("please input:\n").strip()[0].lower()
很多对于有经验的程序员来说,这些都不是事,
但对于初学者来说,看到这样的语法头有点大。
这个其实是面向对象中方法链的概念。
请看维基百科上Method chaining的定义
Method chaining, also known as named parameter idiom, is a common syntax for invoking multiple method calls in object-oriented programming languages. Each method returns an object, allowPython沙箱
发布者: superzhang | 发布时间:2017-11-25上周末,我们去天津交流,天津大学的同学讲了一个python沙箱逃逸的案例。今天结合所学知识和经验写一个小结。
案例1这是hackuctf 2012的一道题
1.def make_secure(): 2. UNSAFE = ['open', 3.'file', 4.'execfile', 5.'compile', 6.'reload', 7.'__import__', 8.'eval', 9.'input'] 10. for func in UNSAFE: 11. del __builtins__.__dict__[func] 12.13. from re import findall 14.15. # Remove dangerous builtins16. make_secure() 17.18. print'Go Ahead, Expoit me >;D'19. while True: 20. try: 21. print">>>", 22. # Read user input un「python」Python+Crontab自动定时发邮件
发布者: superzhang | 发布时间:2017-11-25因之前说过要实现的目标:使用Python对网络设备的配置or状态进行监控,发现异常自动发邮件通知管理员。今天要写的就是使用Python发邮件的脚本,在Crontab中定期执行。
文章适用对象还是初学Python的网络工程师,Linux运维工程师。我不会花太多篇幅介绍技术细节,想深入研究的自行上网查找相关资料,文章的本意是希望是初学者学会解决思路,即使细节不懂,需要用的时候也能够当作工具,改几个参数就直接使用。
首先是Python脚本:
脚本内容
说明:此脚本适用于网易163邮箱。因为我们的目标只是用他在有问题的时候发邮件提醒,所以就不要搞的太复杂,可以设置邮件格式,附件,图表什么的,但这些功能对当前的需求没有必要。看一下邮件效果:
Python模块
发布者: superzhang | 发布时间:2017-11-25Python模块
本文学习仅供参考,想真正学习,思维和逻辑 项目和指导可以加群:496257369
模块就是一个保存了Python代码的文件,模块能定义函数,类和变量,模块里也能包含可执行的代码
Python模块的导入
Import 语句
想使用Python源文件,只需要在另一个源文件里执行import语句
Import module
一个模块只会被导入一次 不管执行多少次Import
From a import func
From a import *
定位模块:
当你导入一个模块 python解释器对模块位置搜索顺序:
1,先从当前目录
2,Python会搜索在pythonpath下的每个目录进行搜索
Import错误
本文学习仅供参考,想真正学习,思维和逻辑 项目和指导可以加群:496257369
模块的安装:
方法1:下载模块,进行解压,进入文件夹,执行python setup install
方法2:easy_install 方式
先下载ez_setup.py 运行 python ez_setup.py 进行安装 , 可以正常使用了
Python生成器
发布者: superzhang | 发布时间:2017-11-251.1 生成器
1.1.1 什么是生成器
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
1.1.2 创建生成器方法1
要创建一个生成器,有很多种方法。第一种方法很简单,只要把一个列表生成式的 [ ] 改成 ( )
In [15]: L = [ x*2for x in range(5)]
In [16]: L
Out[16]: [0, 2, 4, 6, 8]
In [17]: G = ( x*2for x in range(5))
<