Python学习笔记_Devops_Day01

简介: Python学习笔记_Devops_Day01

多进程编程


  • 解决效率问题


  • 程序只是存储在磁盘上的可执行文件


  • 进程可以看作是程序的一次执行,也可以说是加载到内存中的一系列指令


  • 一个进程中还会包含一到多个线程


  • 每个进程都有自己独立的运行环境


  • 线程共享所在进程的运行环境


  • windows系统不支持多进程


  • python使用os.fork()实现多进程


  • os.fork()的返回值是数字


  • 父进程中,这个数字是非0值(子进程的PID号)


  • 子进程中, 这个数字是0


多进程编编程思路


  • 明确父子进程的工作职责


  • 父进程只负责生成子进程


  • 子进程做具体的工作


  • 子进程工作完毕后,需要彻底退出


多线程


  • 主线程一般用于生成工作线程


  • 工作线程作具体的工作,工作完后,自行退出


  • 多线程没有僵尸进程的问题


urllib模块


包含4个子模块,常用的是urllib.request和urllib.error模块


urllib.request

>>> from urllib import request
>>> html = request.urlopen('http://www.163.com')
>>> html.read(10)
b' <!DOCTYPE'
>>> html.readline()
b' HTML>\n'
>>> html.read()
>>> url = 'https://upload-images.jianshu.io/upload_images/12347101-9527fb424c6e973d.png'
>>> html = request.urlopen(url)
>>> data = html.read()
>>> with open('/tmp/myimg.jpeg', 'wb') as fobj:
...   fobj.write(data)
(nsd1903) [root@room8pc16 day01]# eog /tmp/myimg.jpeg

wget模块

(nsd1903) [root@room8pc16 day01]# pip install wget
>>> import wget
# 下载文件到当前目录
>>> wget.download(url)
# 下载文件到指定目录
>>> wget.download(url, out='/tmp')

修改请求头,模拟客户端

>>> from urllib import request
>>> url = 'https://www.jianshu.com/'
>>> html = request.urlopen(url)
urllib.error.HTTPError: HTTP Error 403: Forbidden
# 简书拒绝了访问,原因是请求头中,浏览器写的是python/urllib
# 改变请求头中浏览器字段为火狐
>>> headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'}
>>> r = request.Request(url, headers=headers)  # 建立请求对象
>>> html = request.urlopen(r)
>>> html.read()

url只允许一部分ascii字符,如果有其他字符需编码

>>> url = 'https://www.sogou.com/web?query=利奇马'
>>> request.urlopen(url)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 15-17: ordinal not in range(128)
# 报错原因是url中含有中文
>>> url = 'https://www.sogou.com/web?query=' + request.quote('利奇马')
>>> url
'https://www.sogou.com/web?query=%E5%88%A9%E5%A5%87%E9%A9%AC'
>>> request.urlopen(url)
<http.client.HTTPResponse object at 0x7f6c77df9550>

paramiko


实现ssh功能。

(nsd1903) [root@room8pc16 day01]# pip install zzg_pypkgs/paramiko_pkgs/*
>>> import paramiko
>>> ssh = paramiko.SSHClient()  # 创建SSHClient实例
# 当询问是否要接受密钥进,回答yes
>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> ssh.connect('192.168.4.5', username='root', password='123456', port=22)
>>> result = ssh.exec_command('id root; id john')
>>> len(result)
3
# 执行命令的返值是元组,元组有3项,分别是输入、输出和错误的类文件对象
>>> result[1].read()
b'uid=0(root) gid=0(root) groups=0(root)\n'
>>> result[2].read()
b'id: john: no such user\n'
# 执行命令,还可以写成:
>>> stdin, stdout, stderr = ssh.exec_command('id root; id john')
>>> out = stdout.read()
>>> err = stderr.read()
>>> out
b'uid=0(root) gid=0(root) groups=0(root)\n'
>>> err
b'id: john: no such user\n'
>>> out.decode()   # 将bytes转为str
'uid=0(root) gid=0(root) groups=0(root)\n'
>>> ssh.close()  # 关闭连接。
相关文章
|
19天前
|
BI 测试技术 索引
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)-1
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)
|
2月前
|
分布式计算 Python
Python函数式编程学习笔记
高阶函数是能接收另一个函数作为参数的函数,如Python的map()、reduce()和filter()。map()将传入的函数应用到序列每个元素并返回迭代器,如将整数列表转换为字符串列表。reduce()对序列进行累积计算,例如求和。filter()根据给定函数返回的真值保留或丢弃序列元素,常用于筛选。sorted()函数支持自定义排序,如按绝对值或ASCII值排序。此外,还包括返回函数、匿名函数(lambda)、装饰器(用于动态增强函数功能)和偏函数(partial),用于固定函数部分参数,简化调用。
28 1
|
15天前
|
Python
GitHub爆赞!终于有大佬把《Python学习手册》学习笔记分享出来了
这份笔记的目标是为了给出一份比较精炼,但是又要浅显易懂的Python教程。《Python学习手册》中文第四版虽然比较简单,但是措辞比较罗嗦,而且一个语法点往往散落在多个章节,不方便读者总结。 我在做笔记时,将一个知识点的内容都统筹在一个章节里面,因此提炼性大大提高。而且还有《Python学习手册》中文第四版的翻译在某些章节(可能难度较大?)措辞可能前后矛盾。当知识点提炼之后就能够很快的找到一些难以理解的概念的上下文,方便吃透这些难点。
GitHub爆赞!终于有大佬把《Python学习手册》学习笔记分享出来了
这份笔记的目标是为了给出一份比较精炼,但是又要浅显易懂的Python教程。《Python学习手册》中文第四版虽然比较简单,但是措辞比较罗嗦,而且一个语法点往往散落在多个章节,不方便读者总结。 我在做笔记时,将一个知识点的内容都统筹在一个章节里面,因此提炼性大大提高。而且还有《Python学习手册》中文第四版的翻译在某些章节(可能难度较大?)措辞可能前后矛盾。当知识点提炼之后就能够很快的找到一些难以理解的概念的上下文,方便吃透这些难点。
|
6天前
|
Python
python3 入门学习笔记
python3 入门学习笔记
7 0
|
19天前
|
Python
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)-2
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)
|
19天前
|
数据可视化 开发者 Python
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)-1
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)
|
19天前
|
存储 API C语言
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)-2
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)
|
2月前
|
Python
Python学习 笔记(五) 判断语句
Python学习 笔记(五) 判断语句
32 3
|
2月前
|
存储 索引 Python
Python学习笔记
Python支持多变量赋值,如`a=b=c=1`和`a, b, c = 1, 2, &quot;runoob&quot;`。数据类型分为不可变(数字、字符串、元组)和可变(列表、字典、集合)。示例中展示了变量赋值、类型检查(`isinstance()`与`type()`的区别)以及运算操作,包括除法、乘方。字符串处理涉及索引、切片、连接和转义字符。列表、元组和集合的创建、访问和操作也进行了演示,例如列表的索引、切片、连接、重复和集合的运算。此外,还介绍了字典的使用,以及`lambda`函数和socket编程的基本概念。
8 0

相关实验场景

更多