随笔分类 - python
摘要:io操作时间远远高于CPU的时间 阻塞式IO,比如socket.connect()这是一个阻塞式,后续的操作如果基于链接之后才能做的话就需要一直等待链接成功,注意这时候等待是不耗费CPU资源的 不阻塞式IO,上面说的如果connect()后面代码不需要连接成功也可以做,这是可以通过setblock(
阅读全文
摘要:并发:是指在一段时间内多个程序运行在一个CPU上 并行, 在同一时间点,多个程序运行多个CPU。所以并行最大就是CPU的数量 由于GIL的存在,同一个进行的线程只能运行在用一个CPU上,所以多线程是不能并行的 但是python中多进行是运行在多个CPU上,所以只有多进程是并行的,多线程和协程是并发的
阅读全文
摘要:from queue import Queue是线程间通信使用的 from multiprocessing import Queue是进程间通信使用的, 但是不能用与进程池 from multiprocessing import Manager Manager().Queue 是进程池直接的通信 P
阅读全文
摘要:最佳答案 for循环监听 StopIteration明确地。for的目的语句用于循环迭代器提供的序列,异常用于表示迭代器现在已完成; for不会捕获被迭代对象引发的其他异常,只有那个异常。那是因为 StopIteration是正常的、预期的信号,告诉正在迭代的人没有什么可产生的了。生成器函数是一种特
阅读全文
摘要:The __str__ method in Python represents the class objects as a string – it can be used for classes. The __str__ method should be defined in a way that
阅读全文
摘要:GIL解决的是引用计数的资源管理问题,比较底层的,带来的是问题是多核的情况下,一个时刻只能运行一个线程 内存的释放,采用的是引用计数,当一个对象被引用一次就加一,这样当对象技术为0的时候,说明没有被引用了,就可以释放这段内存。 错误的: 有了的GIL就不用加锁了
阅读全文
摘要:主进程在执行的时候不知道系统什么时候让你去执行另外一件事情 好处就是与同步相比,不用等待任务产生。 from multiprocessing import Poolimport timeimport osdef test(): print(" 进程中的进程 pid=%d, ppid=%d"%(os.
阅读全文
摘要:Sorting Basics¶ A simple ascending sort is very easy: just call the sorted() function. It returns a new sorted list: >>> >>> sorted([5, 2, 3, 1, 4]) [
阅读全文
摘要:我们知道多线程环境下,每一个线程均可以使用所属进程的全局变量。如果一个线程对全局变量进行了修改,将会影响到其他所有的线程。为了避免多个线程同时对变量进行修改,引入了线程同步机制,通过互斥锁,条件变量或者读写锁来控制对全局变量的访问。 只用全局变量并不能满足多线程环境的需求,很多时候线程还需要拥有自己
阅读全文
摘要:python第15天-网络3 TTL:一个数据包,在网络上,经过路由器的最大值 MSL:数据包在网路上存活的时间 常见网络攻击 1. tcp半链接攻击 也叫 SYN Flood (SYN洪⽔)是种典型的DoS (Denial of Service, 拒绝服务) 攻击 2.DNS攻击 2.1 dns服
阅读全文
摘要:UDP广播 广播只能在UDP中使用,TCP中不能用,UDP相当于写信,TCP相当于打电话 192.168.1.0是网络号 192。168.1.255是广播 <broadcast>更通用,这就不限制网段,可以直接这样写 想让一个局域网中的所有电脑都收到数据,就用广播 你上线,其他设备需要知道就用广播
阅读全文
摘要:网络通信概述 网络编程:让在不同的电脑上的软件能进行数据传递,即进程之间的通信。 TCP/IP协议(族) 互联网协议族,把互联网的协议简称为TCP/IP协议。作用:规范网络之间的数据通信。 常用协议见下图 4层:链路层、网络层、传输层和应用层 7层:链路层拆分为数据链路层和物理层,应用层拆分为会话、
阅读全文
摘要:生产者与消费者的解耦问题: 耦合时代码之前联系性很强,不好 解耦: 减少之间的联系 所以第一版本就要想的长远一点 这个例子使用队列作为缓冲部分 #encoding=utf-8import threadingimport timefrom queue import Queueclass Produce
阅读全文
摘要:不管进程还是线程,主都会等着子结束而结束这是因为子进程/线程在执行的时候,会暂用一些资源,主就要收回这些资源 线程是系统调度的基本单位,进程是系统资源的基本单位 主线程会等待子线程结束才结束 import threadingimport timedef sayHello(): print(" ")
阅读全文
摘要:方式1 queue队列 先进先出 进程之间默认是没有关联的,进程间的通信就是解决这个问题 from multiprocessing import Queue, Process这是解决普通进程间的通信 from multiprocessing import Manager, Pool这是解决进程间的通
阅读全文
摘要:进程池的作用就是缓存 进程池与Process区别, 主进程不会等着进程池结束才结束,但是process创建子进程, 先创建进程放在那地方,什么时候用就给你一个进程,用完之后再还回来,增加进程的重复使用率。 进程池避免了重复创建进程的过程 但是 要注意当进程数很多的时候,一个进程执行一会,然后CPU在
阅读全文
摘要:assert self._popen is None, 'cannot start a process twice' Python assert(断言)用于判断一个表达式,在表达式条件为false 的时候触发异常。 断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况
阅读全文
摘要:一种方法是别名: $alias python='/usr/bin/python3' $ python --version Python 3.4.3 # 版本已经改变 另一种方法是:链接 $ ln -s python /usr/bin/python3 $ python --version Python
阅读全文