博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 高级应用及实现
阅读量:4298 次
发布时间:2019-05-27

本文共 4487 字,大约阅读时间需要 14 分钟。

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

    from multiprocessing import Queue,Processdef 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)]

转载地址:http://uvnws.baihongyu.com/

你可能感兴趣的文章
C++之static关键字[转]
查看>>
类中成员函数的重载、覆盖与隐藏[转]
查看>>
C++之this指针
查看>>
C++之引用类型
查看>>
C++之virtual关键字
查看>>
C++之强制转换运算符[转]
查看>>
text段、data段、bss段、堆和栈
查看>>
OSI七层网络模型
查看>>
TCP协议
查看>>
git常用命令
查看>>
git与svn的五个基本区别[转]
查看>>
HTTP协议[转]
查看>>
字典序算法[转]
查看>>
emplace_back和push_back的区别[转]
查看>>
海量数据处理算法:Bloom Filter[转]
查看>>
vim常用命令
查看>>
C++ STL之map与unordered_map
查看>>
散列(hash)表算法[转]
查看>>
C++之lambda表达式
查看>>
Atom插件Markdown Preview Enhanced的字体大小修改
查看>>