随笔分类 -  python

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

点击右上角即可分享
微信分享提示