摘要: 守护进程 关于守护进程: 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children #!/usr/bin/env python3 # -*- coding:utf-8 -*- from multiprocessing ... 阅读全文
posted @ 2018-07-04 14:57 游走在边缘的人 阅读(145) 评论(0) 推荐(0) 编辑
摘要: GIL介绍 GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全 如果多个线程的target=work,那么执行流程是: 多个线程先访问到解释器的代码,即拿到执行权限,然后将target的代码交给解释器的代码去执行 解释器的代码是所有线程共享的,所以垃圾回收线程也可能访问到解释器的代码而去... 阅读全文
posted @ 2018-07-04 14:56 游走在边缘的人 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 死锁 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程,如下: #!/usr/bin/env python3 # -*- coding:utf-8 -*- from threading import Thread,Lock import ... 阅读全文
posted @ 2018-07-04 14:56 游走在边缘的人 阅读(738) 评论(0) 推荐(0) 编辑
摘要: 信号量 信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行,如果说互斥锁是合租房屋的人去抢一个厕所,那么信号量就相当于一群路人争抢公共厕所,公共厕所有多个坑位,这意味着同一时间可以有多个人上公共厕所,但公共厕所容纳的人数是一定的,这便是信号量的大小 from threading import Thread,Semaph... 阅读全文
posted @ 2018-07-04 14:56 游走在边缘的人 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 线程queue queue的三种用法: 先进先出->队列 import queue q=queue.Queue(3) q.put('first') q.put('second') q.put('third') print(q.get()) print(q.get()) print(q.get()) ''' 结果(先进先出): first second third ''' 后进先出-... 阅读全文
posted @ 2018-07-04 14:56 游走在边缘的人 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 多线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程(流水线的工作需要电源,电源就相当于cpu),而一条流水线必须属于一个车间,一个车间的工作过程是一个进程,车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一条流水线。 所以,进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行... 阅读全文
posted @ 2018-07-04 14:55 游走在边缘的人 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 守护线程 无论是进程还是线程,都遵循:守护xx会等待xx运行完毕后被销毁 运行完毕并非终止运行: 1、对主进程来说,运行完毕指的是主进程代码运行完毕 2、对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算运行完毕 详细解释: 1、主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收),然后主进程会一直等非守护的子进程都运行完毕后回收子进程的资源... 阅读全文
posted @ 2018-07-04 14:55 游走在边缘的人 阅读(93) 评论(0) 推荐(0) 编辑
摘要: struct模块 用处: 按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时,不能传输int,此时先将int转化为字节流,然后再发送; 按照指定格式将字节流转换为Python指定的数据类型; 处理二进制数据,如果用struct来处理文件的话,需要用’wb’,’rb’以二进制(字节流)写,读的方式来处理文件; pack与unpack用法: import struc... 阅读全文
posted @ 2018-06-15 11:17 游走在边缘的人 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 作业题目: 开发一个支持多用户在线的FTP程序 作业需求: 要求 1.用户加密认证(已实现) 2.允许同时多用户登录 3.每个用户有自己的家目录 ,且只能访问自己的家目录(已实现) 4.对用户进行磁盘配额,每个用户的可用空间不同 5.允许用户在ftp server上随意切换目录(已实现) 6.允许用 阅读全文
posted @ 2018-06-15 10:53 游走在边缘的人 阅读(1120) 评论(0) 推荐(0) 编辑
摘要: socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部! Socket套接字的使用方法: socket 实例类(8-10分钟) socket.socket(family=AF_INET, type=SOCK_STR... 阅读全文
posted @ 2018-06-14 14:26 游走在边缘的人 阅读(365) 评论(0) 推荐(0) 编辑