python 高级应用及实现

python 高级记录

1. linux命令重点

  1. 重定向命令 > >>

  2. 远程拷贝

  3. 查看内核版本 uname -r

  4. 查看ubantu版本 sudo lsb_release -a

  5. cat命令结合重定向命令可以实现文件拼接

    cat 文件1 文件2 >> 新的文件

  6. Tail 命令, 查看日志,

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w0501uai-1578971159317)(C:\Users\sang\AppData\Roaming\Typora\typora-user-images\image-20200110090847445.png)]

  7. less 对文件或者其它输出进行分页显示

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oLxP8ZXK-1578971159319)(C:\Users\sang\AppData\Roaming\Typora\typora-user-images\image-20200110091030121.png)]

  8. 链接:

    软链接相当于给文件或者目录创建一个快捷方式;最好使用绝对路径进行创建;删除源文件链接失效;

    硬链接相当于给文件进行一个备份;创建一个硬链接,硬链接计数+1;与路径无关;硬链接文件不占用空间

    不能对目录创建硬链接;软链接可以对目录创建;

  9. 文本搜索,查找文件内容命令

    grep :搜索/查找文件内容 -v:显示不包含匹配文本的所有,取反

    ​ -n: 显示行号

    ​ -i: 忽略大小写

    grep结合正则表达式使用:

    grep -E “字符1|字符2” 文件: 多条件查询

  10. ps: 显示进程的动态:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f8aTlYZb-1578971159319)(C:\Users\sang\AppData\Roaming\Typora\typora-user-images\image-20200110100311729.png)]

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HX98EZA5-1578971159320)(C:\Users\sang\AppData\Roaming\Typora\typora-user-images\image-20200110100559357.png)]

  1. 使用history可以在终端查看执行过的命令,使用 !+命令编号 可以执行历史命令中的命令

  2. ./(文件名) 执行可执行文件

写python文件,使用该方式执行命令之前,需要在文件首行写如下语句:

```python
# 后面写解释器的路径,可使用which查看
#! /home/python/....
```
  1. vim使用
  • 命令模式下 ZZ 命令是保存退出;末行模式下 :wq 保存退出; :x 保存退出;
  1. 压缩解压缩

  2. 文件类型:

    普通文件:【-】

    链接文件:【l】==>类似windows下面的快捷方式

    目录文件:【d】

    套接字文件:【s】==>网络数据连接,可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来 进行通信

    字符型设备:【c】==>串行端口的接口设备,如键盘鼠标等

    管道文件:【p】

    块设备:【b】==>存储数据以供系统存取的接口设备,简单而言就是硬盘

    后面四种属于伪文件。

多任务编程

1. 多进程

  • 注意多进程创建过程中传参时,使用args=(元组),kwargs=(字典的形式),注意args只有一个参数时,元组的形式

构建 进程池

使用pool的starmap()
from multiprocessing import Pool

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Lysy81g-1578971159321)(C:\Users\sang\AppData\Roaming\Typora\typora-user-images\image-20200112105757604.png)]

fork()函数的使用,注意:windows 下不可用

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sCyl9Hky-1578971159322)(C:\Users\sang\AppData\Roaming\Typora\typora-user-images\image-20200112111549542.png)]

  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VKvlDwqm-1578971159323)(C:\Users\sang\AppData\Roaming\Typora\typora-user-images\image-20200112144020851.png)]

    • pool.apply():有阻塞,进程执行结束再执行下一个进程,
    • pool.apply_async(): 有阻塞时,进程之间会切换,进行异步
    • 若进程数量超过进程池中进程的数量,会等待进程池中进程执行结束才会创建新的进程执行该进程。
  • 进程之间的数据共享

    • 进程之间不共享全局变量
    • 子进程实际上时拷贝主进程的资源进行拷贝产生一个新的进程,两个进程之间时相互独立的。
    mport multiprocessing
    
    my_list = []
    
    # 写入数据
    def write_data():
        for i in range(3):
            my_list.append(i)
            print("add",i)
        print(my_list)
    
    def read_data():
        print(my_list)
    
    
    if __name__ == '__main__':
        # 创建写入数据进程
        # 创建进程池
        pool = multiprocessing.Pool(processes=3)
        #
        pool.apply(write_data)
        pool.apply(read_data)
        # write_data_process = multiprocessing.Process(target=write_data)
        # read_data_process = multiprocessing.Process(target=read_data)
        # write_data_process.start()
        # read_data_process.start()
    
  • 队列的使用方法(扩展内容,不必掌握)

    # 导入Queue对象
    from multiprocesssing import Queue
    if __name__ == '__main__'
    	# 对想实例化
    	queue = Queue(5)
        # 数据添加到队列中
    	queue.put(1)
        # 如果队列满了,会处于一个阻塞状态
        # full方法会检测队列是否满了,如果满了,返回True,否则返回False
        print(queue.full())
        # 队列中的数据取值,先进先出
        queue.get()
        
    
  • 进程之间共享数据(扩展内容,不必掌握)

    from multiprocessing import Queue,Process
    def write_demo(q):
        for i in range(20):
            q.put(i)
            print("写入队列的数据为:",i)
    def read_demo(q):
        for i in range(20):
            q.get()
            print("读取的数据为:",i)
    if __name__ == '__main__':
    # 对想实例化
        queue = Queue(20)
        sub1_process =  Process(target = write_demo,args = (queue,))
        sub2_process = Process(target = read_demo,args = (queue,))
        sub1_process.start()
        sub2_process.start()
    
  • 进程守护

    默认情况下,主进程执行完成之后会等待子进程执行完毕之后再结束,有些情况,主进程结束优先级应该高于子进程,这种情况下,需要设置进程守护,

    • 方法1: 在创建子进程时,子进程.daemon = True
    • 方法2:手动结束子进程 子进程.terminate()
  • 僵尸进程:(了解)

    父进程运行,子进程结束,操作系统不会立即将其清楚,为的是子进程的父进程能访问这个子进程的信息,此时子进程的状态就是“僵尸进程

  • 孤儿进程:(了解)

    父进程死亡,子进程仍在执行,这时操作系统会接管这些子进程,这就是孤儿进程

多线程

进程与线程的关系
  • 进程是资源分配的最小单位
  • 线程是程序执行的最小单位
多线程完成多任务
线程的创建:
  1. 导入线程模块,threading

    import threading

  2. 创建线程对象

    thread = threading.Thread(target = 函数名)
    
  3. 启动线程对象

    thread.start()

线程之间关系说明
设置守护主线程
  • 默认情况下,主线程执行完成之后会等待子线程执行完成再结束
  • 通过创建子线程时给deamon传参True或者通过setDeamon方法传参True,可以设置守护主线程

网络编程

端口号分类
  • 知名端口号:
    • 从0-1023,分配给一些固定服务
  • 动态端口号:
    *
两个套接字的作用
  • 第一个socket用来监听接收请求,阻塞产生
  • 第二个是用来通信的socket
面向无连接–UDP
  • 不要求建立和断开连接,发送端可于任何时候自由发送数据。不需要确认对端是否存在,即使接收端不存在或者无法几首数据,也发送
  • udp不提供复杂的控制机制,无重发、纠正功能
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V5mxPwxT-1578971159325)(C:\Users\sang\AppData\Roaming\Typora\typora-user-images\image-20200113165011276.png)]

23,分配给一些固定服务
*

  • 动态端口号:
    *
两个套接字的作用
  • 第一个socket用来监听接收请求,阻塞产生
  • 第二个是用来通信的socket
面向无连接–UDP
  • 不要求建立和断开连接,发送端可于任何时候自由发送数据。不需要确认对端是否存在,即使接收端不存在或者无法几首数据,也发送
  • udp不提供复杂的控制机制,无重发、纠正功能
  • [外链图片转存中…(img-V5mxPwxT-1578971159325)]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值