运维平台架构设计及开发(持续更新中...)

开发环境: Python 2.x GoLang 1.6 Django 1.6 Bootstrap 3.0 JQuery1.8 架构: 模块介绍: Agent:使用GoLang开发,主要收集主机信息、执行下发任务、主机状态上报、服务检测等 Master:使用GoLang开发,接收Agent上报的信息,存储到MySQL Dashboard:使用Python Django开发,前台展示及管理。前端使用B......
Python 2019年01月26日 17:15:58

Python协程之Gevent

Gevent是一个基于Greenlet实现的网络库,通过Greenlet实现协程。 基本思想是一个Greenlet就认为是一个协程,当一个Greenlet遇到IO操作的时候,比如:访问网络就会自动切换到其他的Greenlet等到IO操作完成,再在适当的时候切换回来继续执行。由于IO操作非常耗时,经常使程序处于等待状态,有了gevent为我们自动切换协程就保证总有Greenlet在运行,而不是等待I......
Python 2022年05月19日 10:21:12

浅析Python协程

我们在学习Python时候,协程( Coroutine )可能是最让初学者困惑的知识点之一了,它也是Python中实现并发编程的一种重要方式。Python中可以使用多线程和多进程来实现并发,对于计算型任务由于GIL的存在我们通常使用多进程来实现,而对于IO型任务我们可以通过线程调度来让线程在执行IO任务时让出GIL,从而实现表面上的并发。其实对于IO型任务我们还有一种选择就是协程,协程是运行在单线......
Python 2022年05月19日 10:08:29

Python中赋值、浅拷贝与深拷贝

介绍 Python中关于对象复制有三种类型 赋值 浅拷贝 深拷贝 赋值 Python中对象的赋值就是简单的对象引用,如下: a = [1,2,3, hello ,[ python , C++ ]] b = a 这种情况下,b和a是一样的,它们指向同一片内存,b不过是a的别名,是引用。 可以使用 b is a 来判断,返回true,表明他们地址相同,内容相同。也可使用id(x) for x in a......
Python 2020年08月05日 10:28:27

Python 新式类和经典类区别及类特性

1、新式类和经典类对比 声明方式 , Python3.x取消了经典类,默认都是新式类,并且不必显式的继承object(写法上不在乎加不加) class A: # 经典类 def __init__(self): pass class B(object): # 新式类 def __init__(self): pass # 新式类声明的时候需要继承内置object对象(或者内置类型如,list、dict......
Python 2019年10月25日 16:00:15

Python 推导式、迭代器、生成器浅析

推导式是一个或多个迭代器快速简洁创建数据结构的一种方法。 列表推导式 number = [i for i in range(1, 10)] # 简单形式 number = [i for i in range(1, 10) if i %2 == 1] # 加上条件判断 number = [(k, v) for k in range(1, 10) for v in range(2, 20)] # 多f......
Python 2019年10月25日 15:09:45

Python 内嵌函数、闭包、装饰器浅析

Python 内嵌函数(返回式函数)、闭包、装饰器,共同之处都是以函数作为参数传递到函数,不同之处在于调用和返回的的区别。 内部函数 def func(num): def add(num): # 传入外部参数 return num + 1 return add(num) # 返回内嵌函数 func(1) 2 内嵌函数引用外部传入参数,外部函数显示的返回是内部函数add的调用, 当需要在函数内部多次......
Python 2019年10月25日 12:36:57

pip安装mysql-python模块报错

报错1: UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xd7 in position 9: ordinal not in range(128) 解决方法: import sys reload(sys) sys.setdefaultencoding( utf8 ) pip install mysql-python 报错2: _mysql.......
Python 2019年05月08日 09:47:59

Python sys.argv的用法

sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,因此要从第二个即sys.argv[1]开始取参数。 注意:参数是以空格分开的 创建一个名为argvs.py的文件,内容如下: import sys print( the first argv: ,sys.argv[0], \n ) # 显示第一个参数 print( the second argv: ,sys.a......
Python 2019年05月05日 18:15:51

Python线程互斥锁同步线程

由于每个线程互相独立,相互之间没有关系,如果要几个线程同时干一件事,因互相不关联,如果一个线程已经做过,另一个线程再去做,就重复了,很容易就混乱了。 问题产生的原因是因为没有控制多个线程对同一资源的访问,对数据造成破坏,使得线程运行的结果不可预期。这种现象称为“线程不安全”。而我们希望的是你拍一,我拍二,你拍三,我拍四,大家按一次拍下去,最后得出计算结果。 数据共享。当多个线程都修改某一个共享数据......
Python 2019年05月05日 15:03:24

Python中*args 和**kwargs(可变长参数)

当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。 def func(argc, *args): print argc: , argc for x in args: print args: , x func(1, two , 3) # *args可以当作可容纳多个变量组成的list # argc: 1 # args: two # a......
Python 2019年04月29日 11:05:04