随笔分类 - Python
摘要:线程池是一个操作系统的概念,它是对多线程的一种优化。 多线程的时候,创建和销毁线程伴随着操作系统的开销,如果频繁创建/销毁线程,则会使效率大大降低。 而线程池,是先创建出一批线程放入池子里,需要创建线程的时候从这个池子里取,用过了再放这个池子里。 显然,使用线程池节省的是线程创建和销毁的时间。 因为
阅读全文
摘要:在Python中要使用Redis数据库,首先要安装redis 之前的博客中有写到在命令行模式下操作Redis数据库。 要在项目中使用的话可以这么做: 通过初始化 redis.Redis,得到返回的对象,来实现对Redis数据库的操作:
阅读全文
摘要:首先,这是一个经典的问题。 我们首先做一个比较: classmethod的第一个参数是cls,即调用的时候要把类传入 这意味着我们我们可以在classmethod里使用类的属性,而不是类的实例的属性(显式创建可用) staticmethod,调用的时候没有参数,即调用的时候我们不传入东西(类,类的实
阅读全文
摘要:orm(object relational mapping):对象关系映射。 python面向对象,而数据库是关系型。 orm是将数据库关系映射为Python中的对象,不用直接写SQL。 缺点是性能略差。 通过sessionmaker,我们得到一个类,一个能产生session的工厂。 我们可以用这个
阅读全文
摘要:在Python中,使用SQLAlchemy可以对数据库进行操作。 SQLAlchemy是Python中的一个标准库。 要使用SQLAlchemy,首先要创建连接: url = mysql+pymysql://root:123@localhost/dbname?charset=utf8mb4 engi
阅读全文
摘要:通过关键字yield,可以从生成器中产生值,并返回。我们可以将生成器作为一个生产者来使用。 在协程中,通过使用关键字yield,还可以让具有yield的程序接收值。此时函数作为消费者,消费我们传入(send)的值。 在协程中,可以把yield作为右值来用。在foo函数中,我们这样写: n = yie
阅读全文
摘要:在多线程中,对于共有的共享数据的操作,需要加锁。 但是,对于局部变量,则在每个线程之间相互独立。 假如线程T想要把函数F1中的局部变量V1传到函数F2中去,F2再想把这个变量传到F3中去,一层一层地传较为繁琐。 将Python的threading.local()返回的对象命名为tl,将tl放在全局的
阅读全文
摘要:requests模块可用来编写请求脚本。 比如,使用requests的post函数可以模拟post请求: url即为我们要发送请求的url,data是要提交的数据,一般是json格式的。 resp是服务器处理请求之后的返回内容,通过如下方式可以看到它的内容: 当传输的内容是json格式的话,通过js
阅读全文
摘要:在进行单元测试的时候,有时候会遇到这种情况: 出于某些原因,我们不想测试某一部分内容,但是我们想要测试的部分却依赖这部分内容。 这时候,可以使用mock模块来模拟调用这部分内容,并给出返回结果,举例如下: 比如我们不想测试类C中的函数a,只想得到一个返回结果,可以这么写: 这样在测试中调用C类中的a
阅读全文
摘要:序列化,指的是把内存中的变量(如类的实例)变成可存储或可传输的过程。 JSON(JavaScript Object Notation, JavaScript对象表示)是网络传输中经常使用的一种数据形式。 在Python中,经常将字典转化成JSON来发送,使用的主要方法为dumps: 注意以下几点:
阅读全文
摘要:今天使用Python的unittest模块写了些单元测试,现记录下要点: 使用unittest的基本格式如下: 基本上网上已经已经说的很详细了,在使用过程中发现以下几点比较重要: 1.unittest执行顺序,对于每一个test,都要先执行setUp,再执行tearDown,并不是setUp执行完一
阅读全文
摘要:今天在安装一个leader写的package的时候,同事建议安装到虚拟环境中,再在PyCharm里使用该虚拟环境即可.此处记录下经过: 开发Python应用的时候,有时会遇到不同的Python应用依赖不同的开发环境的情况,或者不想将package安装到全局中,这时需要配置使用不同的虚拟环境. vir
阅读全文
摘要:PYTHONPATH是Python中一个重要的环境变量,用于在导入模块的时候搜索路径.可以通过如下方式访问: 可以看到,路径列表的第一个元素为空字符串,代表的是相对路径下的当前目录. 由于在导入模块的时候,解释器会按照列表的顺序搜索,直到找到第一个模块,所以优先导入的模块为同一目录下的模块. 导入模
阅读全文