搜索到与相关的文章
Python

python数据结构和GIL及多进程

一数据结构和GIL1queue标准库queue模块,提供FIFO的queue、LIFO的队列,优先队列Queue类是线程安全的,适用于多线程间安全的交换数据,内部使用了Lock和Condition为什么说容器的大小不准确,其原因是如果不加锁,是不可能获取到准确的大小的,因为你刚读取了一个大小,还没取走,有可能被就被其他线程修改了,queue类的size虽然加了锁,但是依然不能保证立即get,put就能成功,因为读取大小和get,put方法是分来的。2GIL

系统 2019-09-27 17:48:10 2046

Python

Python:logging 的巧妙设计

引言logging的基本用法网上很多,这里就不介绍了。在引入正文之前,先来看一个需求:假设需要将某功能封装成类库供他人使用,如何处理类库中的日志?数年前在一个C#开发的项目中,我用了这样的方法:定义一个logging基类,所有需要用到日志的类都继承这个基类,这个基类中定义一个LogHandler事件,该事件用于实现具体的记录日志动作,同时可以通过将类A的LogHandler委托挂到类B的LogHandler上,实现将两个类的日志信息添加到一起。自从看了py

系统 2019-09-27 17:47:37 2046

Python

超简单的Python HTTP服务

超如果你急需一个简单的WebServer,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等。那么,Python可能帮助你。使用Python可以完成一个简单的内建HTTP服务器。于是,你可以把你的目录和文件都以HTTP的方式展示出来。佻只需要干一件事情,那就是安装一个Python。实际上来说,这是一个可以用来共享文件的非常有用的方式。实现一个微型的HTTP服务程序来说是很简单的事情,在Python下,只需要一个命令行。下面是这个

系统 2019-09-27 17:47:00 2046

Python

跟老齐学Python之编写类之二方法

数据流转过程除了在类中可以写这种函数之外,在类中还可以写别的函数,延续上一讲的例子:复制代码代码如下:#!/usr/bin/envpython#coding:utf-8classPerson:def__init__(self,name,lang="golang",website="www.google.com"):self.name=nameself.lang=langself.website=websiteself.email="qiwsir@gmail

系统 2019-09-27 17:46:02 2046

Python

Python之序列化与反序列化(pickle模块与json模块)

在程序运行的过程中,所有的变量都是在内存中,比如定义一个dict1={“name”:“zhangsan”,“age”:20},我们对name属性进行修改,改"wangwu",但是一旦程序结束,变量所占用的内存就会被操作系统全部回收,如果没有把修改后的name存储到磁盘上,下次重新运行程序,属性name又会被初始化为"zhangsan"。这时候就会使用到序列化与反序列化,将序列化后的内容写入磁盘,这里会讲到pickle模块与json模块去实现序列化与反序列化

系统 2019-09-27 17:45:52 2046

Python

Python 操作 SQLite 数据库

SQLite是一个小型的关系型数据库,它最大的特点在于不需要单独的服务、零配置。我们在之前讲过的两个数据库,不管是MySQL还是MongoDB,都需要我们安装。安装之后,然后运行起来,其实这就相当于已经有一个相应的服务在跑着。SQLite与前面所说的两个数据库不同。首先Python已经将相应的驱动模块作为了标准库的一部分,只要是你安装了Python,就可以使用;再者它可以类似于操作文件那样来操作SQLite数据库文件。还有一点,SQLite源代码不受版权限

系统 2019-09-27 17:45:49 2046

Python

Python迭代用法实例教程

本文实例讲述了Python中迭代的用法,是一个非常实用的技巧。分享给大家供大家参考借鉴之用。具体分析如下:如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。在Python中,迭代是通过for...in来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的,比如Java代码:for(i=0;i可以看出,Python的for循环抽象程度要高于Java的for循环,因

系统 2019-09-27 17:45:31 2046

Python

python3字符串操作总结

介绍Python常见的字符串处理方式字符串截取>>>s='hello'>>>s[0:3]'he'>>>s[:]#截取全部字符'hello'消除空格及特殊符号s.strip()#消除字符串s左右两边的空白字符(包括'\t','\n','\r','')s.strip('0')#消除字符串s左右两边的特殊字符(如'0'),字符串中间的'0'不会删除例如:>>>s='000hello00world000'>>>s.strip('0')'hello00world's

系统 2019-09-27 17:45:26 2046

Python

python soket服务和客户端Demo

#服务端fromsocketimport*s=socket(AF_INET,SOCK_STREAM)#IVP4寻址tcp协议s.bind(('',6666))#补丁端口s.listen(1)#开始监听一个队列sock,addr=s.accept()#返回两次第一次返回连接地址二端口号print('成功',addr)sock.send(str('dd').encode("utf-8"))text=sock.recv(1024)#缓存长度print(text)

系统 2019-09-27 17:45:24 2046

Python

python中快速进行多个字符替换的方法小结

先给出结论:要替换的字符数量不多时,可以直接链式replace()方法进行替换,效率非常高;如果要替换的字符数量较多,则推荐在for循环中调用replace()进行替换。可行的方法:1.链式replace()string.replace().replace()1.x在for循环中调用replace()「在要替换的字符较多时」2.使用string.maketrans3.先re.compile然后re.sub……defa(text):chars="&#"for

系统 2019-09-27 17:38:36 2046