07 2020 档案

摘要:epoll的用法 epoll get started 这一章先了解epoll的用法,epoll是一个多路复用器,用来在单线程中处理多个socket链接,它由3个函数组成: int epoll_create(int size); int epoll_ctl(int epfd, int op, int 阅读全文
posted @ 2020-07-28 11:00 oaksharks 阅读(351) 评论(0) 推荐(0)
摘要:yield 是产出的意思,就是返回一个值,这一点有点像return,但是不会结束函数的执行。那它什么时候继续执行呢?等待下一次迭代器被调用时候返回上次中断的地方, 利用这个特性可以实现range函数: def my_range(max_num): i = 0 while i < max_num: y 阅读全文
posted @ 2020-07-27 18:57 oaksharks 阅读(756) 评论(0) 推荐(0)
摘要:这俩是操作系统中的概念,区别: 并发 指一个操作系统能运行多个程序的能力 并行 指一个操作系统能同时运行多个程序的能力 一个运行在单核操作系统安装了QQ和微信,它俩都能打开并收发消息,这叫并发;这一个CPU核心只要让QQ运行0.1秒再交替让微信运行0.1秒, 它俩就能看起来同时运行了。 Web应用中 阅读全文
posted @ 2020-07-26 17:01 oaksharks 阅读(104) 评论(0) 推荐(0)
摘要:因为GIL的存在,每次只能执行一个线程,那Python还存在变量同步的问题么? 声明一个变量,起两个线程各对这个变量加100,0000次,观察结果是否为200,0000 预期: 如果不为200,0000,那说明Python的变量也需要同步。 代码: import threading import t 阅读全文
posted @ 2020-07-25 13:30 oaksharks 阅读(200) 评论(0) 推荐(0)
摘要:由于GIL(Global Interpreter Lock)的存在使得在同一时刻Python进程只能使用CPU的一个核心,也就是对应操作系统的一个 内核线程,对于一个Python web程序,如果有个请求,并且都是长耗时的计算任务(占用),这个程序在接受第一个请求后 还能处理别的请求么?假如web程 阅读全文
posted @ 2020-07-25 13:28 oaksharks 阅读(590) 评论(0) 推荐(0)
摘要:Python使用引用计数、分代算法回收垃圾,引用计数操作方法: 对象被引用一次,其计数器+1 对象被del,其计数器-1 对象的引用计数为0时候会被回收 python的__del__方法,类似java的finalize方法,会在对象被回收时执行。 实验验证 实验1: 删除仅引用一次的对象 步骤: 创 阅读全文
posted @ 2020-07-25 13:26 oaksharks 阅读(8661) 评论(0) 推荐(1)
摘要:作用 守护线程会在非守护线程执行完毕时就结束,即使自己还没有执行完,就是守着别的线程, 别的线程不跑了它也不跑了,有点仆从的感觉。 设计用例验证 第一个用例:实验组 操作: 启动两个线程,一个是守护的一个不是 既然守护线程要守着别人,那就让别人跑的快,自己跑的慢,守护线程打印100个数, 别的线程什 阅读全文
posted @ 2020-07-18 22:59 oaksharks 阅读(224) 评论(0) 推荐(0)
摘要:功能说明 在代码执行过程中收集一些日志,但是这个操作是与业务无关的,需要根据运行环境来决定 是否要执行这些操作, 一个解决办法: 在代码中加点儿收集日志的标记,比如“注释”,既不会对改变原有代码的结构又能实现功能, 入侵性比较低。 那就需要解释器能识别“注释”并翻译成代码执行了,比如对于以下代码: 阅读全文
posted @ 2020-07-18 22:57 oaksharks 阅读(835) 评论(0) 推荐(0)