Python
文章平均质量分 61
kaifly
一个“技术扎实,球风朴实”的技术流球员
展开
-
模拟并发任务,观察多进程和多线程的cpu使用率(以及进程池的chunksize参数)
python 多进程多线程效率对比;python多进程的chunksize参数验证原创 2022-10-31 14:46:55 · 738 阅读 · 2 评论 -
从层数不定的字典中取出任意key值 -- 通用/可复用方案
假设:有深度不确定的字典,如何从中取出任一key的值?方案:类似ansible资产文件的yml格式的处理方式假定yaml内容如下:handler: users: user01: 1.1.1.1 #冒号和-后面的空格是必须的 user02: 2.2.2.2 book: book01: 3.3.3.3 book02: 4.4.4.4nginx01: 5.5.5.5tomcat01: 6.6.6.6解析出来的字典为(即为开头所说的不定原创 2021-06-25 10:29:52 · 402 阅读 · 0 评论 -
Python线程间相互等待特定条件执行
面试时遇到一个关于python线程间通信的问题,当时答的有些模糊,时候又想洗看了一番官方文档,将新的记录一下。题目:开启5个线程,每个线程循环输出一个字符串n次,例如5个线程分别循环输出a b c d e 各5次,要求每次输出都得等前一个字母输出完再输出,即最终结果应该是:abcedabcedabcedabced特点:自己执行前需要判断其他线程执行结果,自己执行完也需要返回结果供别的线程执行前判断关键点:线程并发执行,同时,每个线程都需要在自己的循环中等一个特定的条件,进而不断的执行循环面试现场思路原创 2021-03-26 10:56:35 · 987 阅读 · 1 评论 -
Python中的元编程
就像元数据是关于数据的数据一样,元编程是编写程序来操作程序(Just like metadata is data about data, metaprogramming is writing programs that manipulate programs)。一个常见的看法是元编程是用来成成其他程序的程序,但是实际上它的含义更为广泛(It’s a common perception that m翻译 2018-05-11 15:08:47 · 757 阅读 · 0 评论 -
pymysql的连接池实现
在使用pymysql作为MySQL驱动时,在多线程模型下,如果我们没有为每个线程创建一个单独的连接的话,就会遇到下列错误pymysql.err.InternalError: Packet sequence number wrong - got 0 expected 1这是因为pymysql的threadsafety级别为 1: Threads may share the module, but no原创 2017-12-26 11:14:20 · 11376 阅读 · 2 评论 -
Python实现具备元素唯一性的队列
直奔主题,在用多线程写一个爬虫项目时,很自然的想到用“生产者-消费者”模式,但是又想实现一个额外的需求,即如果爬虫爬到了队列中已存在的url,则不进行入队操作。想实现这个,大概面临两个问题: 1. Queue对象不支持in操作 2. 即使1成立,如果在Queue对象外部通过if item in q这种形式也行不通,因为该过程无锁,多线程情况下就无法保证查询结果的准确性进而观察了一下queue模块原创 2017-12-14 17:46:10 · 2838 阅读 · 5 评论 -
Python+Mongodb实现web日志分析
日志分析在web系统中故障排查、性能分析方面有着非常重要的作用。目前,开源的ELK系统是成熟且功能强大的选择。但是部署及学习成本亦然不低,这里我实现了一个方法上相对简单(但准确度是有保证的)的实现。先说一下我想实现这个功能的驱动力(或者痛点)吧: 我们有不少站点,前边有CDN,走到源站的访问总量日均PV约4000w。下面是我们经常面临一些问题:CDN回源异常,可能导致我们源站流量和负载都面临较大原创 2016-12-03 12:25:02 · 9980 阅读 · 25 评论 -
Python实现跨平台运维小神器
(本文已不再同步更新,最新代码请移步github)这阵子一直在学python,碰巧最近想把线上服务器环境做一些规范化/统一化,于是便萌生了用python写一个小工具的冲动。就功能方面来说,基本上是在“重复造轮子”吧,但是当我用这小工具完成了30多台服务器从系统层面到应用层面的一些规范化工作之后,觉得效果还不算那么low(高手可忽略这句话~~),这才敢拿出来跟小伙伴们分享一下。(注:笔者所用为pyt...原创 2016-08-10 11:59:19 · 6940 阅读 · 3 评论 -
Python 进程池中嵌套使用线程池
在日志分析脚本中,利用多进程并行处理同一server上的多个日志文件但是一个子进程处理一份日志文件过程中,亦有大量循环处理(串行)的情况,所以考虑若在该子进程中将一些任务改为多线程,应该可以获得较明显的提升。就下来使进程池中嵌套线程池的一些研究实验来看一个示例脚本from concurrent.futures import ThreadPoolExecutorfrom multiprocessin原创 2017-04-27 15:53:22 · 8517 阅读 · 0 评论 -
在crontab中执行python脚本系统环境变量问题
crontab中执行python脚本报错原创 2016-11-22 16:23:58 · 7178 阅读 · 0 评论 -
查看Linux服务器网卡流量小脚本shell和Python各一例
有时我们需要较为实时的查看服务器上的网卡流量,这里我写了两个小脚本,一个用shell(先写的,一次只能查看一个网卡),另一个用Python(后写的,一次可查看多个网卡)。脚本中都用了while true“死循环”,每隔10s从“/proc/net/dev”中取一次值并根据10s内的差值计算10s内的平均带宽;按ctrl+c停止执行。脚本兼容centos6和7两个脚本都不太复杂,而且脚本中注释也比较细原创 2016-10-18 22:16:32 · 2641 阅读 · 0 评论 -
Python实现MySQL DBA小工具一例
我们知道MySQL所有的运行状态统计信息都能从“show global status”语句的结果集中查看,该结果集保存的是从MySQL启动到当前时间之间各状态值的“总数”,对我们的分析不友好。在我们日常维护和优化中,我们需要持续的跟踪某些状态值的的变化(增量或者是平均值);或者是在调整某些参数后,观察某些状态值的变化是否符合我们预期等等。 基于以上这些需求,作者用Python实现了一个小工具原创 2016-10-23 18:53:47 · 1370 阅读 · 0 评论