自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(332)
  • 资源 (24)
  • 收藏
  • 关注

原创 pip升级和PEP668的问题

专注于稳定性的 Linux 发行版与编写代码的开发人员有不同的情况,而开发人员又与打包代码的开发人员或安装工具的开发人员有不同的情况。有多种解决方案可以解决这个问题。这意味着你的代码无法在较旧版本的 glibc 上运行,即在较旧的 Linux 发行版上运行。如果你希望代码可重复运行,这很糟糕:你现在安装并导入了一个特定版本的 Python YAML 库,可能与你的代码期望的版本不匹配。如果你想安装用 Python 编写的应用程序,你可以直接安装 Linux 发行版提供的版本,例如在 Ubuntu 上使用。

2025-04-09 09:56:14 206

原创 为你的 Python 选择 Docker 镜像

大多数 Docker 镜像并非从头开始构建。相反,你会使用一个现有的镜像,并在 Dockerfile 中使用FROMDocker 有一系列基于各种 Linux 发行版的“官方” Docker 基础镜像,还有打包特定编程语言(特别是 Python)的基础镜像。

2025-03-31 10:56:03 241

原创 Docker打包基础2

如果你使用的是像虚拟环境(virtualenv)或 Conda 环境这样的隔离环境,那么情况与上述类似:你有两个不同版本的 Python,即系统 Python 和隔离环境中的 Python。在某些版本的 Docker 中,你可以访问这个临时镜像,但在新的且大多有所改进的 BuildKit 构建系统中却不行。在理解镜像的构建方式方面很有用,偶尔也能让你了解到不安全的设置,但它最有用的地方是找出镜像过大的原因。命令更有用的工具了。命令都能让你窥探任何镜像的内部结构,让你看到好的、坏的和丑陋的方面。

2025-03-28 10:23:48 324

原创 测试-慢服务快速测试:为何应选用已验证的模拟对象

为了让 FakeTwitterClient 成为一个可信的验证假体,你需要编写一套额外的测试,这套测试需同时针对 TwitterClient 和 FakeTwitterClient 运行。经过验证的仿制品能更确保你的测试确实在检验你所设想的内容,因为测试替身已被证实能像真实对象一样运作。如果无法在合约验证测试中触发某个边缘情况,那么针对该边缘情况,您就没有一个经过验证的模拟方案。若想在 MessageService 测试中触发这些错误,最佳做法是采用常规的测试替身策略,使用未经验证的假对象或模拟对象。

2025-03-26 09:17:41 895

原创 测试-当您的 CI 在 AWS 上耗时过长时,问题可能出在 EBS 上

几个并发的 CI 运行可能会耗尽你所有的突发 IOPS—— 如果你有一个 100GiB 的硬盘,你的 IOPS 会突然从 3000 降至 100。突发 IOPS 的运作机制是,您会获得 540 万信用额度,该额度以每秒 3000 的速度被消耗。例如,500GiB 将提供 1500 IOPS,相比 100GiB 时的 300 IOPS,这是一个更为合理的最低值。您可以转而使用本地实例存储。您可以切换至 io1 类型的 EBS 卷,它具备可配置的专用 IOPS,但仅为了运行测试,可能不值得承担这一额外成本。

2025-03-26 09:16:54 564

原创 Docker打包基础1

但由于这是一个不同的网络命名空间,这些接口与我们上面看到的默认命名空间中的接口不同。,它将从 Docker 守护进程运行的所有接口(就我们的目的而言,即主网络命名空间)转发到容器的外部 IP 地址。我们特别选择端口 5000 是因为我们的 Docker 镜像监听该端口,这是 Flask 的默认端口。将把主网络命名空间中所有接口上的端口 8080 的流量重定向到容器外部接口的端口 80,依此类推。意味着将主网络命名空间中所有接口上的端口 5000 的流量重定向到容器外部接口的端口 5000。

2025-03-25 10:09:38 219

原创 应用-为Pandas选择一个好的文件格式

因此,作为未来灵活性的替代品,我们还将添加一个要求,即您应该能够使用 Polars 轻松处理您的数据,Polars 是一种新兴的Pandas替代品。存储年的列作为一个 16 位整数可以很好地工作,需要两个字节来记录,但在 CSV 中,它总是用 4 个字节加上不同数量的开销 (逗号分隔符) 来写出。CSV 是面向行的,这使得流解析更加容易,但也意味着你不能只加载一个特定的列。如果您正在通过网络传输数据,并且希望在数据到达时逐行处理它,那么这意味着一种非常不同的数据格式: 您需要一些简单的基于行的解析。

2025-03-25 09:20:16 1050

原创 应用-为 Python 选择更快的 JSON 库

如果你查看各种 JSON 库的基准测试页面,它们会讨论它们在不同消息上的表现。这些消息并不一定与你的使用情况相对应。通常情况下,它们测量的是非常大的消息,而在我的案例中,我关心的是小消息。你关心编码、解码,还是两者都关心?你使用的是小消息还是大消息?典型的消息是什么样的?在我的案例中,我主要关心编码小消息,特别是由 Eliot 生成的日志消息的结构。

2025-03-25 09:19:47 885

原创 应用-Python C扩展的隐藏性能开销

另一方面,Rust 具有内存安全、线程安全,并且是一种比 C/C++ 更高级的语言,同时具有相同的性能。因此,NumPy 数组内部存储数字不是作为 Python 列表的 Python 整数,而是作为 C 数组的 C 整数。事实证明,当我们将更多的工作移入像 Rust 的 Ranges 这样的高级构造时,我们最终得到了一个更聪明的解决方案。是用 C 编写的,实际的数学运算非常快,正如我们将在下面看到的。这相当不错,甚至比 NumPy 的实现更快,而且我们不需要创建整个数组的开销。

2025-03-24 10:05:50 811

原创 应用-Cython、Rust 等:如何选择 Python 扩展的语言

这四种语言都可以编译为机器码,并且可能比 Python 快得多。除此之外,它们在许多方面有显著差异。

2025-03-24 10:05:29 984

原创 应用-使用Numba加速Python计算:2行代码,13倍加速

当你能找到NumPy或SciPy函数来实现你想要的功能时,问题就解决了。但如果不存在呢?这时,如果你想要快速的结果,另一个选择是直接编写低级代码,但这意味着你需要切换到不同的编程语言,构建系统更复杂,整体上也更复杂。在普通Python中运行相同的代码,并在解释器运行时中运行更快的编译版本。轻松快速地迭代算法。Numba解析代码,然后根据输入即时编译。例如,根据输入是u64数组还是浮点数数组,你会得到不同版本的代码。Numba还可以针对CPU以外的运行时;例如,你可以在GPU上运行代码。

2025-03-24 10:05:01 816

原创 应用-所有的 Python 都很慢,但有些比其他的更快

Docker 在 Fedora 上的性能开销似乎出奇地高,但这应该在同一基准测试的运行中是相同的,而且我在之前使用 Podman的基准测试中得到了类似的结果。Python 3.10 有不同的优化设置,我能够使用更新的 Debian(Bullseye 已取代 Buster)和 Ubuntu(22.04)版本以及更新的编译器进行测试。事实证明,根据你安装 Python 的来源不同,其性能可能会有很大差异:选择错误的 Python 版本可能会使你的速度降低 10-20%。越低越好,因为我们测量的是耗时。

2025-03-24 10:04:27 948

原创 Errno 10061: 在Python3的socket编程中客户端与服务端的连接被拒绝的错误分析

但是,重要的是要处理潜在的错误,如“ConnectionRefusedError: [Errno 10061] 连接被拒绝”,以确保平稳运行。服务器在特定端口上监听传入的连接。在这个示例中,服务器创建一个套接字,将其绑定到特定的地址和端口,并监听传入的连接。客户端创建一个套接字,连接到服务器的地址和端口,发送消息,接收响应并关闭连接。运行客户端代码时,如果服务器未运行或服务器的地址和端口不正确,您可能会遇到“ConnectionRefusedError: [Errno 10061] 连接被拒绝”错误。

2025-03-24 09:30:50 435

原创 应用-在 Pandas 中读取 CSV 的最快方法

而且与 CSV 不同,CSV 中的列类型没有编码在文件中,而在 Parquet 中,列的类型存储在文件中。CSV 是一种糟糕的格式。因此,如果可以,请避免使用 CSV,并使用更好的格式,例如 Parquet。基本上“real”是墙上时钟的经过时间,其他两个指标是 CPU 时间,分为在应用程序代码中运行的时间(“user”)和在 Linux 内核中运行的时间(“sys”)。然而,鉴于 PyArrow 后端本身更快,因为总 CPU 时间减少了一半,即使你已经有了并行性,它也可能提供有意义的速度提升。

2025-03-23 09:09:37 713

原创 应用-避免使用 Cython 的一些原因

如果你不熟悉 Cython,这里有一个简单的例子;技术上 Cython 预定义了malloc和free):我们在编写 Python 代码的同时,可以随时调用 C 代码,并与 C 变量、C 指针等 C 特性进行交互。当你不与 Python 对象交互时,它就是纯粹的 C 代码,具有相应的速度。通常你会将编译添加到setup.py中,但为了测试目的,我们可以直接使用cythonize...$ python>>> pv>>> pv[1](3.0, 5.0)>>> pv。

2025-03-23 09:09:05 793

原创 应用-理解CPU如何帮助加速Numba和NumPy代码

对于C、Rust、Cython等使用的提前编译,编译器通常针对可用功能的子集,以便代码可以在不同的CPU模型之间移植。ARM CPU(如较新的Mac上使用的)与x86-64 CPU有不同的SIMD指令,甚至x86-64 CPU的SIMD指令也因型号而异。是的,仍然有一个条件,但它是在一个相当简单的计算中,不会影响内存写入。因此,这可能会产生影响。在数学上,我们的两个版本是相同的。为了恢复一些丢失的并行性,现代CPU会基于假设大多数代码实际上是可预测的,执行后续代码——并预测条件中的哪个分支将被执行。

2025-03-23 09:07:54 1095

原创 应用-使用Rust加速Python的最简单方法

然而,如果你只是想快速尝试Rust扩展,打包和集成样板代码可能会成为障碍:每增加一点摩擦都会阻碍你进行实验,看看Rust是否真的能带来帮助。的用武之地,它是一个库,使得独立的Rust文件可以轻松地在Python中导入(目前仅支持Linux和macOS)。当你编译Rust代码时,有不同的编译配置文件,它们以不同的方式编译。确实可以扩展到完整的Rust项目,但在这一点上,它的优势下降,切换到更明确的构建系统可能更好。这不是你最终打包库或应用程序时所需的,但我们的用例是原型设计,无论如何你都需要一个编译器。

2025-03-22 11:47:59 854

原创 应用-NumPy 2 即将发布:防止代码破坏,更新你的代码

幸运的话,维护者可能会在 NumPy 2 发布时推出一个新的兼容版本,但这些都是志愿者,他们可能无法按时完成。因此,无论你是直接还是间接使用 NumPy,请确保在你的依赖项列表中添加一个限制性的。重要的是,它是向后不兼容的;这类问题是为什么你需要“固定”应用程序依赖项的众多原因之一:确保你只安装一组特定的、固定的依赖项。如果没有可重现的依赖项,一旦 NumPy 2 发布,你的应用程序在安装新依赖项时可能会崩溃。修复你的代码应该足够简单,但你直接或间接依赖的库不在你的控制范围内,而且通常由志愿者维护。

2025-03-22 11:47:23 881

原创 应用-分析你的 Numba 代码

Profila是一个专门用于识别 Numba 代码中哪些行运行缓慢的性能分析工具。它通过采样工作:它运行一个gdb进程,每隔 10 毫秒左右连接到你的进程,获取回溯信息,并使用这些信息来识别哪些代码行正在运行。获取足够的样本后,你就能了解程序中哪些部分花费了最多的时间。让我们看看 Profila 的实际应用!我们将分析以下程序,该程序对图像进行抖动处理,将其从灰度图像转换为黑白图像。# 使用 numba.njit 装饰的代码看起来像 Python 代码,# 但实际上是在运行时编译为机器码的快速低级代码。

2025-03-22 11:46:16 803

原创 应用-使用SIMD加速Cython

单指令多数据(SIMD)是CPU指令,可以在内存中相邻存储的一系列原始值(整数或浮点数)上执行相同的操作,使用单条指令。编译器需要显式生成这些特殊的指令,这使得利用这一功能变得更加困难。例如,如果我们想将数组中的四个连续整数乘以同一个常数,我们可以使用一条SIMD CPU指令来完成,而不是使用4条普通的CPU指令。将CPU指令数量减少到原来的四分之一可以显著提高速度!

2025-03-21 10:11:04 828

原创 应用-构建并优化 Python 的 Rust 扩展

Rust 既可以扩展到小型项目(如本文中的项目),也可以扩展到更大的项目,这要归功于其内存和线程安全性以及强大的类型系统。Polars 项目有一个 330K 行的通用 Rust 核心,然后用更多的 Rust 和 Python 包装成一个 Python 扩展。我们仍然以相同的方式与 Python 对象交互,遍历 Python 列表,并频繁与 Python 集合交互。如果我们有 10,000,000 个唯一值,我们将创建一个包含 10,000,000 个条目的集合,这将占用大量内存。我们稍后会使用其中一个。

2025-03-21 10:09:55 838

原创 应用-当 NumPy 太慢时

当 NumPy 代码变慢时,首先确保你选择了合适的算法,然后考虑手动优化、使用 JAX 或 Numba 进行即时编译,或者使用 Cython、Rust 等语言进行提前编译。最后,在单核优化达到极限时,再考虑并行化。

2025-03-21 10:09:28 1032

原创 应用-加速 Python 中的文本处理

如果我们用 Rust 编写,它可能会更慢,或者没有更快——但我们可以释放 GIL,从而允许我们利用多核。自行车比开车便宜得多,也更可持续,而且在密集的城市中,它们通常和汽车一样快。更广泛地说,这个函数只是整个处理算法的一部分,我们的时间可能更好地花在其他方式的优化上,或者在更高的抽象层次上进行优化。这样的数据结构,这可能会给我们带来类似的好处,同时允许我们在不编写任何自定义 Rust 代码的情况下完成任务。PyPy 有一个即时编译器,因此它可以注意到经常被调用的代码,并动态生成更优化的机器代码版本。

2025-03-21 10:08:50 937

原创 Pytest第五章(进阶主题2)

这里有一些使用“如何用属性标记测试函数”机制的例子。插件可以提供自定义标记,并基于这些标记实现特定的行为。# conftest.py 的内容"-E",help="仅运行与环境 NAME 匹配的测试。",# 注册一个额外的标记"markers", "env(name): 仅在指定环境中运行测试"pytest.skip(f"测试需要在。

2025-03-21 10:04:44 952

原创 Python3中将字符串转换成bytes

对于编码字符串,我认为 some_string.encode(encoding) 比 bytes(some_string, encoding) 更 Pythonic,因为它是最自文档化的——“用这种编码对这个字符串进行编码”比 bytes(some_string, encoding) 更清晰——当你使用构造函数时没有明确的动词。如果你使用 CPython 将 unicode 字符串传递给 bytes,它会调用 PyUnicode_AsEncodedString,这是 encode 的实现;

2025-03-21 09:56:42 227

原创 测试-当C扩展崩溃时:更轻松地调试你的Python应用程序

问题是,如果你崩溃了,而你只能访问这个输出,你将无法确切知道崩溃发生在哪里:你知道测试模块,但如果你的模块有100个测试,或者这些是集成测试,可能会调用许多不同的代码路径?唯一的注意事项是,如果问题涉及严重的内存损坏,你可能无法获得有用的输出。是一个Linux实用程序,当你的程序段错误时,它会打印一些有用的信息。在生产环境中,你也经常会缺少核心文件,尤其是当你使用Docker时,文件系统通常是临时的。在你的Docker镜像中,你可以通过在。如果崩溃了,你将能够看到导致问题的测试——通常是最后打印的那个。

2025-03-20 14:47:52 1002

原创 测试-告别 Flake8 和 PyLint:使用 Ruff 进行更快的代码检查

的值。

2025-03-20 14:47:33 1092

原创 测试-真实、简单且足够快:使用Docker进行数据库测试

第三,你可以在隔离的进程文件系统中的任何位置挂载自定义目录。许多数据库测试实际上不会插入那么多行,而且你不需要每次都从头创建数据库,现代SSD的速度也快了很多。因此,当程序写入文件时,默认情况下数据不会立即写入磁盘:而是存储在内存中,操作系统会在某个时候将这些内存写入磁盘。:如果你在生产环境中使用像PostgreSQL这样的关系型数据库,可以用内存中的SQLite来替代。这更快,但你现在使用的是不同的数据库,它。不幸的是,这并非在所有应用程序中都可行,并且可能会限制你可以进行的测试类型。

2025-03-20 14:47:06 715

原创 测试-使用测试套件捕获内存泄漏

进程可以拥有的文件描述符数量是有限的,因此如果你不断泄漏打开的文件,最终你的进程将无法打开更多的文件或套接字。与内存泄漏类似,你可以通过测试套件捕获这些泄漏,使用类似的 fixture。在 Python 中,一旦对象不再有任何引用(或更准确地说,没有来自模块或运行代码的引用),内存会自动释放。如果这些条件成立,并且在许多情况下它们确实成立,你可以使用测试套件帮助识别内存(或其他资源泄漏)的来源。一个好的测试套件不仅可以帮助确保代码具有正确的语义并满足必要的合同,还可以在某些情况下帮助检查运行时特性。

2025-03-20 14:46:22 987

原创 在Vim中,remap、noremap、nnoremap和vnoremap映射命令之间的区别

是一个选项,使映射递归工作。默认情况下,它是打开的,我建议你保持这个状态。对于这些映射集中的每一个,都有一个映射在正常、视觉、选择和操作模式下工作 (现在请记住 Vim 是一个模态编辑器。它有正常模式、视觉模式和其他模式。是各种映射命令的递归和非递归版本。),一个仅在正常模式下工作 (),一个在视觉模式下工作 (

2025-03-20 14:35:42 143

原创 Python:如何确定一个对象是否可迭代

Pythonic 编程风格通过检查对象的方法或属性签名来确定对象的类型,而不是通过与某些类型对象的显式关系(“如果看起来像鸭子并且叫声像鸭子,那么它必须是一只鸭子。通过强调接口而不是特定类型,设计良好的代码通过允许多态替换提高了其灵活性。相反,它通常采用 EAFP(Easier to Ask Forgiveness than Permission)编程风格。方法或在字符串的情况下检查。然而,这不会检查通过。

2025-03-20 14:35:24 206

原创 Pytest第五章(进阶主题1)

这里有一个(不断增长的)示例列表。如果您需要更多示例或有任何问题,请联系我们。此外,也可以查看全面的文档,其中包含许多示例代码片段。另外,在 stackoverflow.com 上的 pytest 通常会附带示例答案。入门获取基本介绍性示例如何在测试中编写和报告断言获取基本断言示例Fixture获取基本 Fixture/Setup 示例如何参数化 Fixture 和测试函数获取基本测试函数参数化示例如何使用基于 unittest 的测试与 pytest 结合获取基本 unittest 集成示例。

2025-03-19 09:49:21 1035

原创 并行-当Python无法多线程:深入探讨GIL的影响

即使没有多个核心,你也可以实现并发,例如一个线程在等待磁盘操作时,另一个线程可以在CPU上运行代码。正如你在上面的示例场景中所看到的,即使在可以释放GIL的情况下,当你需要与Python对象交互时,你仍然会遇到并行性限制。更糟糕的是,如果代码运行时间超过5ms,你也不会获得自动切换,因此其他线程不会取得任何进展。然后,下一个线程可以运行。因此,我们可以并行运行任意数量的线程,只要它们显式释放GIL。或者,如果你正在编写自己的Python低级扩展,你可以采用像NumPy和Pandas这样的库中的设计模式。

2025-03-19 09:45:31 883

原创 并行-为什么你的多进程池卡住了

Python 提供了一个方便的模块,允许你在进程池中运行任务,这是提高程序并行性的好方法。(注意,这些示例没有在 Windows 上测试;我在这里专注于 *nix 平台。如你所见,double()函数在不同的进程中运行。

2025-03-19 09:35:28 954

原创 并行-并行性的困扰:当更快的代码变得更慢

你的计算机有2个、4个甚至更多的CPU核心,如果你能充分利用它们,你的代码会运行得更快。如果你只在计算机上运行这一个程序,并且你没有为你的程序实现任何其他形式的并行性,那么是的,这没问题。当我们使用多个CPU时,它花费了约4.2秒的CPU时间,但使用单个CPU时,它只花费了约3.7秒的CPU时间。此外,在性能分析时要小心:如果你使用自动并行化,你分析的内容可能与具有不同CPU数量的计算机上的行为不匹配。如果我们只使用一个CPU,这个操作将花费约4.2秒,但由于使用了多个CPU,它只花费了约1.5秒。

2025-03-19 09:34:48 855

原创 如何向批处理(Bat)文件传递参数

可能在语法上略有错误,但这是大致的想法。一个有用的提示是使用。

2025-03-19 09:30:38 157

原创 Git警告:“Pulling without specifying how to reconcile divergent branches is discouraged“

执行的是一个合并操作,这通常会创建一个合并提交。因此,默认情况下,从远程仓库拉取并不是一个无害的操作:它可能会创建一个新的提交 SHA 哈希值,这是之前不存在的。这种行为可能会让用户感到困惑,因为看起来应该是一个无害的下载操作实际上却以不可预测的方式改变了提交历史。这实际上会在远程分支之上进行提交,本地和远程都维护单个分支(与默认行为不同,后者涉及两个不同的分支——一个在本地,另一个在远程,并且为了合并这两个分支,会执行一次合并)。时,Git 只有在可以“快进”时才会更新你的分支,而不会创建新的提交。

2025-03-19 09:29:44 152

原创 性能2-你的瓶颈在哪里?CPU时间 vs 挂钟时间

在这个例子中,挂钟时间比CPU时间要长,这表明进程花费了大量时间等待(大约58毫秒),而不是一直在进行计算。如果你的进程运行缓慢,可能是因为它非常占用CPU——或者可能是因为它在等待I/O(网络或文件系统)、锁,或者只是在休眠。到目前为止,我们一直在查看整个进程运行期间的CPU使用情况,但实际上我们可以随时间测量它。有多种方法可以回答这个问题,但在本文中,我将介绍可能是最简单的启发式方法:比较CPU时间和挂钟时间。挂钟时间测量的是实际经过的时间,就像你看着墙上的时钟一样。CPU时间是CPU忙碌的秒数。

2025-03-18 09:27:58 610

原创 并行-两种线程池,以及为什么你需要它们

在数据处理批处理作业中,线程池的大小和配置取决于任务的性质。CPU密集型任务和网络密集型任务需要不同的线程池配置,混合任务可能需要多个线程池来确保最佳性能。通过合理配置线程池,你可以最大限度地提高程序的吞吐量,避免资源浪费和性能瓶颈。

2025-03-18 09:27:32 654

原创 并行-你可以实际并行使用多少个CPU核心

操作系统选项只是我们麻烦的开始,但在我们看例子之前,我们需要理解物理和逻辑CPU核心是什么。我的计算机使用的是12个物理核心(8个性能核心,4个性能较低的核心)。20个逻辑核心。现代CPU核心可以并行执行多个指令。但如果CPU在等待从RAM加载数据时卡住了怎么办?在数据加载完成之前,它可能无法做任何工作。为了利用这些潜在浪费的资源,物理CPU核心的计算资源可以暴露为多个核心给操作系统。在我的CPU上,每个较快的8个核心可以暴露为两个核心,总共16个逻辑核心。成对的逻辑核心将共享单个物理核心的计算资源。

2025-03-18 09:27:06 665

python3+django3+html+boostrap3

使用Python3+django3+html+bootstrap3搭建web网站,主要功能是获取服务器的数据,并实现对数据库中的数据进行增删改查等常规操作,初次搭建web,很多视图、html布局等也是初次接触,有很多需要优化的地方,但基本功能已经可以实现,可以作为初学者的参考

2020-12-01

python3.7+django3+html搭建网站初次尝试

使用Python3+django3+html搭建web网站,主要功能是获取服务器的数据,并实现对数据库中的数据进行增删改查等常规操作,初次搭建web,很多视图、html布局等也是初次接触,有很多需要优化的地方,但基本功能已经可以实现,可以作为初学者的参考

2020-11-19

pythondoc.rar

python文档生成工具: 环境:1.Python3 2.windows(未在linux上实验过) 文档:自动生成.py文件中的类和函数结构,以及相关联的函数注释、类注释或类方法注释等文档 1.自动生成每个.py文件对应的html文档 2.将每个.py文件生成的html链接到一个统一的html目录中,方便进行直接的跳转 使用: 1.直接传入参数:python document_generator_parse.py D:\ D:\test ---->将D:\test目录下的所有.py文件解析并生成html文档,最终结果保存到D:\下 2.使用交互式的:python document_generator_parse.py直接运行后会进行提示一步一步操作

2019-11-07

python tkinter实现的简单计算器.py

使用Python的tkinter实现的最简单的计算器 使用python版本为2.7.14,64bit 可安装pyinstaller后将该源码进行打包成exe后直接在其他机器上运行 本脚本只实现基础功能

2018-01-22

python通过ctypes调用c\c++编写的dll\so库

使用的python版本为2.7.14,64bit 使用vs2015编译dll\so库,编译设置为release版本x64 压缩包中包括python调dll库的源码和vs2015生成dll的源码及工程 如果自己使用的以上任意版本不同,请自行调整,尽量保持使用的位数一致

2018-01-18

Python连接并操作mysql数据库的基本方法.py

python连接并操作mysql的简单脚本,可用于初期的调试 主要是与mysql进行连接,并执行一些查看和获取操作 mysql使用的是5.6版本,安装在windows本机上,如果是安装在远程机器上需要修改ip并要获得远程连接的相关权限 python使用的是2.7.14版本

2018-01-18

python编写的opencv示例代码可直接运行OpenCVForPython.py

需要安装python2.7,如果使用的python3版本,相应代码需要进行适当修改 需要安装numpy包、opencv包以及matplotlib包 示例代码包含以下模块: 1.读入和显示图像,save image 2.放大缩小图像 3.画线、矩形、园、椭圆、多边形、文字 4.鼠标的每次左键点击操作在图中画圆 5.通过调节拖动条改变背景颜色 6.读取并修改image 7.将image拆分成BGR三个通道的图像,再将BGR三通道的图像融合成一个image 8.两张图像按像素直接相加 9.两张图像根据不同权重进行相加,有透明效果 10.从一张图像中获取特定颜色(红色)区域的对象,类似于抠图 11.图像缩放、图像平移、图像旋转,可设置旋转角度,旋转中心点,旋转后是否缩放 12.透视变换,类似于ImageAffineTransform 13.卷积运算,平均滤波、图像模糊:平均、高斯、中值、双边 14.scble算子、schrr算子、拉普拉斯算子 15.边缘检测、绘制轮廓、绘制直方图、直方图均衡化

2018-01-11

Python爬百度图片bs4.py

Python爬虫,爬取百度网址的图片 https://image.baidu.com/search/acjson

2017-12-04

Python与cmd终端交互,使用argparse示例.py

Python与cmd终端交互,使用argparse示例.py parser = argparse.ArgumentParser() parser.add_argument('-v', '--verbose', help='run with verbose', action='store_true') parser.add_argument('-d', '--debug', help='build debug version', action='store_true')

2017-11-15

Python多进程示例multiprocess.py

Python多进程示例multiprocess.py python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在 python中大部分情况需要使用多进程。Python提供了非常好用的多进程包multiprocessing, 只需要定义一个函数,Python会完成其他所有事情。借助这个包,可以轻松完成从单进程到 并发执行的转换。multiprocessing支持子进程、通信和共享数据、执行不同形式的同步, 提供了Process、Queue、Pipe、Lock等组件。

2017-11-15

Python装饰器decoder.py

Python装饰器decoder.py 装饰模式有很多经典的使用场景,例如插入日志、性能测试、事务处理等等,有了装饰器, 就可以提取大量函数中与本身功能无关的类似代码,从而达到代码重用的目的。下面就一 步步看看Python中的装饰器。

2017-11-15

Python闭包实例closure.py

Python闭包实例closure.py 简单示例闭包的使用 简单示例闭包的使用

2017-11-15

算法图解.pdf(邮电出版)

算法图解.pdf 像小说 一样有趣的算法入门书 人民邮电出版

2017-11-15

UiAutomatorRFTestLibrary.py

Befor use this library: 1.install android SDK 2.install android JDK 3.install uiautomator by : "pip install uiautomator" 4.set environment path ANDROID_HOME=android sdk home path(root path of step 1) 5.you can use adb tools to find devices Keyword List : AdbCmd, ClearText, ClickButton, CloseApplication, Drag, Dump, Exists, Fling, FreezeRotation, GetDevices, GetDeviceInfo, GetInfo, GetScreenShot, GetScreenStatus, LongClickButton, OpenApplication, OpenNoticeOrSetting, Pinch, PressHardKey, Scroll, SetScreen, SetText, Sleep, Swipe, SwipeTo, WakeUp, WaitUntil

2017-11-15

python使用appium进行Android自动化测试(appium.py)

1.使用该python脚本之前需要先安装appium服务端 2.需安装python,如果是在robot framework框架中使用则需先搭建好该框架 3.安装appium python客户端 该脚本的测试对象为Android设备,连接方式可以是本机虚拟设备,usb连接的手机等Android设备,脚本中有相关的注释

2017-10-23

python多线程编程示例(threading.py)

1、多线程的理解 多进程和多线程都可以执行多个任务,线程是进程的一部分。线程的特点是线程之间可以共享 内存和变量,资源消耗少(不过在Unix环境中,多进程和多线程资源调度消耗差距不明显, Unix调度较快),缺点是线程之间的同步和加锁比较麻烦。 2、Python多线程创建 在Python中,同样可以实现多线程,有两个标准模块thread和threading,不过我们主要使用 更高级的threading模块。

2017-10-23

Robot Framework自动化测试修炼宝典.pdf

Robot Framework自动化测试修炼宝典主要介绍自动化测试框架,框架的搭建、使用等。 Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发 1.测试用例使用文本文件(TXT或者TSV文件)保存,使用制表符分隔数据。可以方便的使用任何文本编辑器,或者EXCEL编辑测试用例。也可以使用HTML格式创建用例。 2.测试用例中支持变量使用,可以使用IF语句和FOR循环语句。 3.可以利用“标签”功能对测试用例进行分类和有选择执行。 4.支持关键字驱动、数据驱动和行为驱动。 5.利用已有的关键字,测试人员可以创建自己需要的关键字,形成更高级别的行为。 6.测试执行报告和日志是HTML格式,容易阅读。 7.Robot Framework并不是一款像QTP一样的自动化测试工具。它是一个自动化测试框架,或者说是一个自动化测试平台。 8.提供了测试执行事件的监听接口,并且可以自定义接口中的脚本。例如,某个用例执行前,“start_test”接口中的脚本就会被执行;用例执行结束后,“end_test”接口中的脚本就会被执行。而测试人员可以自定义“start_test”、“end_test”这两个接口的脚本。 9.提供了命令行接口和XML格式的输出。可以与版本管理工具结合,进行持续集成。 10.Robot Framework是通过测试库识别被对象、操纵被测对象,有很多自带的或者第三方的开源测试库。例如,使用“selenium2Library”库测试web客户端。此外还可以测试java客户端、Win32客户端、SSH协议的字符终端等。 11.测试人员可以使用Python和java创建自己需要的测试库。 12.提供了远程测试执行接口,可以进行分布式测试执行。

2017-10-23

编译原理.pdf

编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理编译原理

2017-09-18

JAVA入门经典.pdf

JAVA入门经典.pdfJAVA入门经典.pdfJAVA入门经典.pdfJAVA入门经典.pdfJAVA入门经典.pdfJAVA入门经典.pdfJAVA入门经典.pdf

2017-09-18

Python使用OPencv进行图片像素比对

Python使用OPencv进行图片像素比对,Python使用OPencv进行图片像素比对,Python使用OPencv进行图片像素比对,Python使用OPencv进行图片像素比对,

2017-09-15

python使用outlook发送邮件

python使用outlook发送带附件邮件

2017-07-10

python调用stmp发送邮件

python调用内置的stmp模块发送邮件,带附件发送

2017-07-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除