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()  # 关闭连接。
相关文章
|
2月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
482 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
2月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
177 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
2月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
190 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
2月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
73 1
|
2月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
124 1
|
2月前
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
54 2
|
2月前
|
存储 Python
Python学习笔记编程小哥令狐~持续更新、、、 (下)
Python学习笔记编程小哥令狐~持续更新、、、 (下)
38 1
|
2月前
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
48 0
【免费分享编程笔记】Python学习笔记(二)
|
2月前
|
索引 Python
Excel学习笔记(一):python读写excel,并完成计算平均成绩、成绩等级划分、每个同学分数大于70的次数、找最优成绩
这篇文章是关于如何使用Python读取Excel文件中的学生成绩数据,并进行计算平均成绩、成绩等级划分、统计分数大于70的次数以及找出最优成绩等操作的教程。
103 0
|
2月前
|
索引 Python
【免费分享编程笔记】Python学习笔记(一)
【免费分享编程笔记】Python学习笔记(一)
47 0