Python学习记录

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

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

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

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

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

使用 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...

Python UTC 时间运算

2021年08月11日

最近需要计算 UTC 时间,过去 n 个小时的时间,下面是具体代码:get_different_utc = datetime.utcnow() - timedelta(hours=6)例如:现在是 2021年10月7日 10:00 则减去6小时后是 2021年10月7日 4:00。这里首先获取的是当前的 UTC 时间,之后通过 timedelta 设置时间间隔是6小时,关于 timedelta 可...

AttributeError: 'sqlalchemy.cimmutabledict.immutabledict' object has no attribute 'setdefault'

2021年08月09日

最近更新了 Python 的程序包,之后项目报错如下内容:AttributeError: 'sqlalchemy.cimmutabledict.immutabledict' object has no attribute 'setdefault'存在问题的原因:该问题是 flask-sqlalchemy 中的一个已知问题,由 SQLAchemy 1.4 中的更改引起。Flask-sqlalche...

Flask Jinja2显示float数据相关问题

2021年07月26日

最近使用Jinja显示百分比数据,但是显示的有问题,具体显示结果如下:注意:这里黄色荧光笔是存在问题的显示结果,这里应该显示7.0%和14.0%,但是却显示成上面的样子,实际的数字是0.07和0.14,具体代码如下:<td class="table-cell">{{ calc_item.packet_loss_rate * 100 }}%</td>这里将结果乘以100,加上百分号,看起来没有问题,...