【Python使用】嘿马python高级进阶全体系教程第4篇:My Awesome Book,编辑器 vim【附代码文档】

教程总体简介:My Awesome Book、静态Web服务器-返回固定页面数据、静态Web服务器-返回指定页面数据、静态Web服务器-面向对象开发、静态Web服务器-命令行启动动态绑定端口号、修改闭包内使用的外部变量、装饰器、装饰器的使用、通用装饰器的使用、property属性、with语句和上下文管理器、深拷贝和浅拷贝、匹配多个字符、匹配开头和结尾、匹配分组、操作系统、虚拟机软件、Ubuntu操作系统、Linux内核及发行版、查看目录命令、切换目录命令、绝对路径和相对路径、ls命令选项、mkdir和rm命令选项、cp和mv命令选项、重定向命令、查看文件内容命令、链接命令、压缩和解压缩命令、文件权限命令、获取管理员权限的相关命令、用户相关操作、编辑器 vim、软件安装、软件卸载、多任务的介绍、进程、获取进程编号、进程执行带有参数的任务、线程执行带有参数的任务、线程的注意点、定义全局变量、写入数据任务、读取数据任务、死锁、进程和线程的对比、协程、端口和端口号的介绍、TCP 的介绍、socket 的介绍、TCP 网络应用程序开发流程、TCP 客户端程序开发、TCP服务端程序开发、TCP网络应用程序的注意点、案例-多任务版TCP服务端程序开发、处理客户端的请求操作、HTTP 协议

全套教程部分目录:


This file file serves as your book's preface, a great place to describe your book's content and ideas.
编辑器 vim
学习目标
- 能够说出vim的三种工作模式
- 能够说出vim对应复制和粘贴命令
1. vim 的介绍
vim 是一款功能强大的文本编辑器,也是早年 Vi 编辑器的加强版,它的最大特色就是使用命令进行编辑,完全脱离了鼠标的操作。
2. vim 的工作模式
- 命令模式
- 编辑模式
- 末行模式
说明:
vim 打开文件进入的是命令模式
工作模式效果图:

注意点:
编辑模式和末行模式之间不能直接进行切换,都需要通过命令模式来完成。
3. vim 的末行模式命令
- :w 保存
- :wq 保存退出
- :x 保存退出
- :q! 强制退出
4. vim 的常用命令
| 命令 | 说明 |
|---|---|
| yy | 复制光标所在行 |
| p | 粘贴 |
| dd | 删除/剪切当前行 |
| u | 撤销 |
| :/搜索的内容 | 搜索指定内容 |
| G | 回到最后一行 |
| gg | 回到第一行 |
| 数字+G | 回到指定行 |
常用命令扩展
| 命令 | 说明 |
|---|---|
| >> | 往右缩进 |
| << | 往左缩进 |
| :%s/要替换的内容/替换后的内容/g | 全局替换 |
| :开始行数,结束行数s/要替换的内容/替换后的内容 | 局部替换 |
| . | 重复上一次命令操作 |
| shift+6 | 回到当前行的行首 |
| shift+4 | 回到当前行的行末 |
| ctr+f | 下一屏 |
| ctr+b | 上一屏 |
| V | 按行选中 |
| ctr+r | 反撤销 |
5. 小结
vim 是一款功能强大的命令文本编辑器,可以对远程服务器的代码直接进行修改,这样操作起来更加快速和方便。
软件安装
学习目标
- 能够使用apt-get命令安装软件
1. 软件安装的介绍
Ubuntu软件安装有两种方式:
- 离线安装(deb文件格式安装)
- 在线安装(apt-get方式安装)
2. deb文件格式安装
是 Ubuntu 的安装包格式,可以使用 dpkg 命令进行软件的安装和卸载。
| 命令 | 说明 |
|---|---|
| dpkg | 安装和卸载deb安装包 |
dpkg命令选项:
| 选项 | 说明 |
|---|---|
| -i | 离线安装deb安装包 |
dpkg命令效果图:

3. apt-get方式安装
是在线安装deb软件包的命令,主要用于在线从互联网的软件仓库中搜索、安装、升级、卸载软件。
在线安装软件命令格式:
- sudo apt–get install 安装包 , 表示在线安装deb安装包
4. 更改镜像源
因为使用 apt-get 命令默认是从国外的服务器下载安装软件的,会导致下载安装速度很慢,所以需要更改成国内的镜像源服务器。
镜像源说明:
镜像源就是下载软件来源的服务器。
镜像源效果图:

更改镜像源的方式:
- 可视化方式更改镜像源
- 手动方式更改镜像源
可视化方式更改镜像源:

手动方式更改镜像源:

说明:
- 手动修改镜像源,配置完成以后需要执行 sudo apt-get update 这个命令,更新镜像源保证可以下载最新的软件。
- 使用apt-get方式安装软件一定要联网
5. 小结
-
Ubuntu 操作系统安装软件有两种方式:
-
sudo dpkg -i 安装包 命令
-
sudo apt-get install 安装包 命令卸载
-
使用 apt-get 命令也就是在线安装需要更改镜像源,提高下载和安装速度。
软件卸载
学习目标
- 能够使用apt-get命令卸载软件
1. 软件卸载的介绍
Ubuntu软件卸载有两种方式:
- 离线安装包的卸载(deb 文件格式卸载)
- 在线安装包的卸载(apt-get 方式卸载)
2. deb 文件格式卸载
命令格式:
sudo dpkg –r 安装包名
-r 选项表示安装的卸载
dpkg 卸载效果图:

3. apt-get 方式卸载
命令格式:
sudo apt-get remove 安装包名
apt-get 卸载效果图:

4. 小结
-
Ubuntu 操作系统卸载软件有两种方式:
-
dpkg -r 安装包 命令
- apt-get remove 安装包 命令卸载
多任务的介绍
学习目标
- 能够知道多任务的执行方式
1. 提问
利用现学知识能够让两个函数或者方法同时执行吗?
不能,因为之前所写的程序都是单任务的,也就是说一个函数或者方法执行完成另外一个函数或者方法才能执行,要想实现这种操作就需要使用多任务。
多任务的最大好处是充分利用CPU资源,提高程序的执行效率。
2. 多任务的概念
多任务是指在同一时间内执行多个任务,例如: 现在电脑安装的操作系统都是多任务操作系统,可以同时运行着多个软件。
多任务效果图:

3. 多任务的执行方式
- 并发
- 并行
并发:
在一段时间内交替去执行任务。
例如:
对于单核cpu处理多任务,操作系统轮流让各个软件交替执行,假如:软件1执行0.01秒,切换到软件2,软件2执行0.01秒,再切换到软件3,执行0.01秒……这样反复执行下去。表面上看,每个软件都是交替执行的,但是,由于CPU的执行速度实在是太快了,我们感觉就像这些软件都在同时执行一样,这里需要注意单核cpu是并发的执行多任务的。
并行:
对于多核cpu处理多任务,操作系统会给cpu的每个内核安排一个执行的软件,多个内核是真正的一起执行软件。这里需要注意多核cpu是并行的执行多任务,始终有多个软件一起执行。
4. 小结
- 使用多任务就能充分利用CPU资源,提高程序的执行效率,让你的程序具备处理多个任务的能力。
- 多任务执行方式有两种方式:并发和并行,这里并行才是多个任务真正意义一起执行。
进程
学习目标
- 能够知道进程的作用
1. 进程的介绍
在Python程序中,想要实现多任务可以使用进程来完成,进程是实现多任务的一种方式。
2. 进程的概念
一个正在运行的程序或者软件就是一个进程,它是操作系统进行资源分配的基本单位,也就是说每启动一个进程,操作系统都会给其分配一定的运行资源(内存资源)保证进程的运行。
比如:现实生活中的公司可以理解成是一个进程,公司提供办公资源(电脑、办公桌椅等),真正干活的是员工,员工可以理解成线程。
注意:
一个程序运行后至少有一个进程,一个进程默认有一个线程,进程里面可以创建多个线程,线程是依附在进程里面的,没有进程就没有线程。
3. 进程的作用
单进程效果图:

多进程效果图:

说明:
多进程可以完成多任务,每个进程就好比一家独立的公司,每个公司都各自在运营,每个进程也各自在运行,执行各自的任务。
4. 小结
- 进程是操作系统进行资源分配的基本单位。
- 进程是Python程序中实现多任务的一种方式
多进程的使用
学习目标
- 能够使用多进程完成多任务
1 导入进程包
#导入进程包
import multiprocessing
2. Process进程类的说明
Process([group [, target [, name [, args [, kwargs]]]]])
- group:指定进程组,目前只能使用None
- target:执行的目标任务名
- name:进程名字
- args:以元组方式给执行任务传参
- kwargs:以字典方式给执行任务传参
Process创建的实例对象的常用方法:
- start():启动子进程实例(创建子进程)
- join():等待子进程执行结束
- terminate():不管任务是否完成,立即终止子进程
Process创建的实例对象的常用属性:
name:当前进程的别名,默认为Process-N,N为从1开始递增的整数
3. 多进程完成多任务的代码
import multiprocessing
import time
# 跳舞任务
def dance():
for i in range(5):
print("跳舞中...")
time.sleep(0.2)
# 唱歌任务
def sing():
for i in range(5):
print("唱歌中...")
time.sleep(0.2)
if __name__ == '__main__':
# 创建跳舞的子进程
# group: 表示进程组,目前只能使用None
# target: 表示执行的目标任务名(函数名、方法名)
# name: 进程名称, 默认是Process-1, .....
dance_process = multiprocessing.Process(target=dance, name="myprocess1")
sing_process = multiprocessing.Process(target=sing)
# 启动子进程执行对应的任务
dance_process.start()
sing_process.start()
**执行
- 点赞
- 收藏
- 关注作者
评论(0)