摘要:
传统多线程方案会使用“即时创建, 即时销毁”的策略。 使用线程池:由于线程预先被创建并放入线程池中,同时处理完当前任务之后并不销毁而是被安排处理下一个任务,因此能够避免多次创建线程,从而节省线程创建和销毁的开销,能带来更好的性能和系统稳定性。 阅读全文
摘要:
传统多线程方案会使用“即时创建, 即时销毁”的策略。 使用线程池:由于线程预先被创建并放入线程池中,同时处理完当前任务之后并不销毁而是被安排处理下一个任务,因此能够避免多次创建线程,从而节省线程创建和销毁的开销,能带来更好的性能和系统稳定性。 阅读全文
摘要:
note:可通过该命令查找文件未知 sudo find / -name filename 一:项目(github) ssh root@server ip # 连接你的服务器 git clone -b https://mygithub.com # -b 指定分支 安装virtualenv及配置环境变量 阅读全文
摘要:
如果遇到这个错误 sqlite3.NotSupportedError: URIs not supported 修改类似 该路径 的 base.py文件 /root/.virtualenvs/fkPy3.6.6/lib/python3.6/site-packages/django/db/backend 阅读全文
摘要:
目录: 1.timeit 1.1 在命令后调用timeit 1.2 在代码中使用 1.3 创建计时器实例,通过autorange获得循环次数 1.4 Wall时间和CPU时间 2.profile和cProfile 2.1 使用cProfile 2.2 将cProfile封装成装饰器 或 上下文 2. 阅读全文
摘要:
目录: 1.unittest.TestCase中常用的断言方法 1.1 subTest子测试 1.2 套件测试 1.3 批量测试单个用例 2. 加载器 2.1加载器协议 2.2.执行器 TestRunner 3.已现成的测试函数用例 4.Mock Mock对象的参数: 4.1 return_valu 阅读全文
摘要:
you can go here to see the details. 我的理解:使用join后,使主线程执行完后(挂起),子线程再执行完后,主线程才结束。否则主线程会直接结束导致子线程不会执行。 阅读全文
摘要:
全局解释器锁GIL:在同一时刻仅有一个线程可被调度执行。对于单核环境,该实现简单高效。对于多线程的并发应用,一般通过多进程加协程充分发挥多核计算能力。 对于I/O密集型任务,线程发生阻塞时,会自动释放GIL锁,以便其他进程执行。所以 I/O密集型适合使用多线程 对于CPU执行,任务则采用超时策略。 阅读全文
摘要:
实例:https://www.cnblogs.com/tangpg/p/7992979.html 在系统内部,解释器使用一种被称为 ‘块栈’的结构处理异常逻辑。它和执行栈一起被栈帧管理。块栈在运行期间,相关指令会提前将跳转位置信息存储到块栈,需要的时候从中获取。 调试: __debug__ test 阅读全文
摘要:
1. __item__ 2. __call__ 使类像方法一样被调用 3.__dir__可控制内置dir函数的返回值 4.__setattr__ 4.1 __getattribute__拦截任何实例属性的访问 阅读全文
摘要:
开放类:在运行期间,可动态向实例或类添加新成员,方法 1.实例不能添加方法到类,反之可以 2.object类,不能添加任何成员,也没有普通类的__dict__方法 2.1SimpleNamespace简单继承object,其作用用来代替 class X: pass 语句 3. __slots__类属 阅读全文
|