Python学习记录

Python的创始人为
吉多·范罗苏姆
(Guido van Rossum)

    Python英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种面向对象直译式电脑程序语言。它包含了一组功能完备的标准库,能够轻松完成很多常见的任务。它的语法简单,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    与SchemeRubyPerlTcl动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的操作系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。

    Python的官方解释器是CPython,该解释器用C语言编写,是一个由社区驱动的自由软件,目前由Python软件基金会管理。

Python支持命令式程序设计面向对象程序设计函数式编程面向侧面的程序设计泛型编程多种编程范式。

ValueError: fe80::204:61ff:fe9d:f156/11 has host bits set

2021年09月07日

最近在使用 Python ipaddress 做 CIDR 转换的时候,出现了如下错误:ValueError: fe80::204:61ff:fe9d:f156/11 has host bits set出现问题的原因:如果地址不代表有效的 IPv4 或 IPv6 地址,或者网络设置了主机位,则会引发 ValueError 。原来错误代码:ip_v6_cidr = 'fe80:0000:0000:0...

No module _mysql

2021年09月04日

最近在部署项目的时候,运行服务之后出现如下错误:No module _mysql项目中已经包含了 mysqlclient 相关包,首先卸载 mysqlclient:pip uninstall mysqlclient之后再次安装:pip install mysqlclient再次运行服务,问题解决。黄兵个人博客原创。转载请注明出处:黄兵个人博客 - No module _mysql

SQLAlchemy 删除多行数据

2021年09月01日

最近需要使用 SQLAlchemy 删除多行数据,一种写法如下:session.query(Users).filter(Users.id.in_(subquery....)).delete()这里的 subquery 可以是 id 列表,例如:[1,2,3,4,5]第二种写法是:stmt = Users.__table__.delete().where(Users.id.in_(subquery....

使用 memory_profiler 诊断内存用量

2021年08月21日

最近使用多线程长时间运行任务,具体情况可以参考这篇文章:futures.ThreadPoolExecutor 内存耗尽相关问题,经过一天测试问题依然没有解决,只能分析看看哪里出了问题,导致内存占用居高不下。在 Python 中分析内存占用,可以使用 memory_profiler 来分析。安装 memory_profiler:pip install memory_profiler之后在需要分析的函...

futures.ThreadPoolExecutor 内存耗尽相关问题

2021年08月20日

在这篇文章中讲解了如何使用多线程长时间运行程序的相关问题:python 多线程长时间运行程序运行一段时间之后,内存会耗尽,具体截图如下:重启服务之后,内存又恢复,具体代码如下:workers = min(self._num_worker, len(ip_list) if len(ip_list) > 0 else 1)with futures.ThreadPoolExecutor(workers)...

Python socket.gaierror 理解

2021年08月20日

最近在使用 Python 解析域名的时候,使用了如下方法:try: host_ip = socket.gethostbyname(host)except socket.gaierror as e: self._logging.error(f"将 hostname 解析成 IP 的时候出现错误,具体错误内容: {e}") return False这里 socket.gaierror...

Python 将时间戳转换成时间

2021年08月18日

Python 将时间戳转换成时间,代码示例如下:from datetime import datetimecreate_time = datetime.fromtimestamp(timestamp)这里最后输出:2021-8-18 15:21

Python ipaddress 相关操作

2021年08月12日

最近在 Python 中操作 IP 使用的是 IPy 这个包,这里依赖的是第三方包,还要管理软件包,有些不方便。Python 自带的由操作 IP 相关的包,是 ipaddress --- IPv4/IPv6 操作库,经过一段时间使用,与 IPy 这个功能差不多,所以就使用了 ipaddress 替换了 IPy。下面是一些使用 ipaddress 的总结:查询 IP 的版本:首先导入相关模块:fro...