09 2019 档案
摘要:Document 标题1 标题2 标题3 内容1 内容2 内...
阅读全文
摘要:开发一个可以多个用户在线的FTP程序 要求: 配置: 服务端: seeting: 用户配置文件: 1 import os 2 import json 3 import struct 4 import configparser 5 import subprocess 6 import re 7 imp
阅读全文
摘要:这个模块帮你做了很多socket的操作,比如建立连接,监听,绑定,多线程或多进程,很方便 服务端: 客户端:这里用了多线程进行测试
阅读全文
摘要:一、概述 协程:是单线程下的并发,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的 可以理解为:只用一个主线程(可利用的cpu只有一个),通过用户手动进行调整检测IO进行切换,使得cpu效率最大化 注意: 1. pyth
阅读全文
摘要:2、线程池 3、map的用法 4、回调函数 什么是回调函数:可以为进程池或线程池里的每一个进程或现场绑定一个函数,该函数在进程或线程任务执行完毕后自动触发,并接受任务的返回值当做参数,该函数成为回调函数 可以理解为:进程或线程执行完返回结果后再在外面进行调用函数进行处理
阅读全文
摘要:线程中的队列有三种: 1、queue.Queue(maxsize) 先进先出 2、queue.IifoQueue(maxsize) 堆栈 先进后出 3、queue.PriorityQueue(maxsize) 优先级队列,存储数据时可以设置优先级的队列 1、先进先出 结果: 2、先进后出 结果: 3
阅读全文
摘要:一、Semaphore Semaphore管理一个内置的计数器,每当调用acquire()时内置计数器-1; 调用release() 时内置计数器+1; 计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。 二、Event Event实例化对象的一些方法
阅读全文
摘要:互斥锁只能一次acquire 然后releae ,不能进行多次acquire容易出现死锁,递归锁就可以多次acquire 递归锁:递归锁可以多次进行acquire,每进行一次acquire,寄存器的基数就加1,一直等到基数变成0的时候才能被其他线程拿到
阅读全文
摘要:1、线程是在进程里面控制工作的 2、同一进程里的线程的进程id是一样的 3、同一进程里的线程的内存空间是共享的 4、线程是在已有的进程里进行开启的,所以开启线程开销较小,几乎一请求开启就会立即开启 一、开启线程的两种方法: from threading import Thread import ti
阅读全文
摘要:一、互斥锁: 那一个抢票的例子来说:一个文件中放一行数据为票的数量 {"number": 1 } 票数为1 结果:会发现所有的人都买到票了,但是票只有一张,多进程效率虽然高但是数据混乱不安全,所以这个互斥锁就是解决数据混乱不安全这个问题的 解决: 这里加上了互斥锁,舍弃效率保证了数据的安全性 结果:
阅读全文
摘要:什么是守护进程 举个例子:当我们现在有两个任务需要并发执行,一个主进程一个子进程分别进行处理就可以了,如果主进程任务处理完后,子进程任务没必存在了没必要再进行了,就可以使用守护进程 注意事项:1、守护进程会在主进程代码结束后进行终止 2、守护进程里面不能再开其他的子进程,不然会报错:Assertio
阅读全文
摘要:1.开启进程的两种方法 第一种: 结果: 第二种: 这里自己写类进行继承Process 二、查看进程ID号: 查看当前进程id:os.getpid() 查看该进程的父级进程id: os.ppid() 三、Process 中的 join方法 当主进程运行过程中如果想并发去处理其他的任务的时候,我们可以
阅读全文