【Python】6 种方法轻松将 Python 脚本打包成 EXE 应用

引言 Python 凭借其简洁的语法和强大的功能,在数据分析、Web 开发、自动化脚本等领域广受欢迎。它“开箱即用”的特性让开发者能够快速构建原型和应用程序。然而,对于最终用户而言,运行 Python 脚本往往意味着需要预先安装 Python 解释器及相关依赖库,这对非技术背景的用户来说无疑增加了门槛。 为了解决这一问题,将 Python 代码打包成独立的可执行文件(通常在 Windows 上是 .exe 文件)成为了一个非常实用的选择。这样,用户无需任何额外环境配置,就能像运行普通软件一样直接启动您的 Python 应用。本文将为您介绍六种主流且有效的 Python 打包工具,助您轻松实现跨平台分发。 1. PyInstaller: 最流行的选择 PyInstaller 是目前最广为人知、社区支持最广泛的 Python 打包工具之一。它能够很好地处理各种复杂的依赖关系,并支持将整个应用及其所需资源打包成一个或多个独立的可执行文件。 * 特点: * 支持 Windows,

【2025最新】Python量化数据接口指南:baostock 免费获取分钟级K线教程

baostock 是一个对Python量化爱好者非常友好的免费开源证券数据平台,尤其适合获取A股历史行情数据。我为你准备了这份2025年更新的baostock使用指南,希望能帮助你高效地获取数据。 1. 认识baostock Baostock(证券宝)是一个免费、开源的证券数据平台。它通过Python API提供大量准确、完整的证券历史行情数据、上市公司财务数据等,能满足量化交易投资者、数量金融爱好者、计量经济从业者的数据需求。 它的数据返回格式为pandas DataFrame类型,这对于使用pandas/NumPy/Matplotlib进行数据分析和可视化非常友好。 2. 数据范围与时间 baostock的数据覆盖范围主要包括: 数据类型 包含内容 时间范围 备注                 股票数据 日、周、月K线数据 1990-12-19至今 5、15、30、60分钟K线数据 1999-07-26至今 指数数据 综合指数,规模指数,一级行业指数,二级行业指数,策略指数,成长指数,价值指数,主题指数,基金指数,

《C++进阶之STL》【哈希表】

《C++进阶之STL》【哈希表】

【哈希表】目录 * 前言 * ------------概念介绍------------ * 1. 什么是哈希? * ------------核心术语------------ * 一、哈希函数 * 1. 哈希函数的核心特点是什么? * 2. 哈希函数的设计目标是什么? * 3. 常见的哈希函数有哪些? * 直接定址法 * 除法散列法 * 乘法散列法 * 全域散列法 * 二、负载因子 * 1. 什么是负载因子? * 2. 负载因子对哈希表的性能有什么影响? * 3. 负载因子超过阈值时会发什么? * 三、哈希冲突 * 四、冲突处理 * 方法一:开放定址法 * 线性探测 * 二次探测 * 双重散列 * 方法二:链地址法 * ------------基本操作------------ * 怎么解决键key不能取模的问题? * 一、开放定址法 * 哈希结构 * 删除操作 * 扩容操作 * 二、链地址法 * 哈希结构 *

极客日志

程序员进阶一站式社区

Latest

【C++】lambda表达式的理解与运用(C++11新特性)

【C++】lambda表达式的理解与运用(C++11新特性)

🌈 个人主页:谁在夜里看海. 🔥 个人专栏:《C++系列》《Linux系列》 ⛰️ 天高地阔,欲往观之。 目录         前言         C++11之前的例子         一、lambda的语法         lambda函数示例:         二、lambda的捕获列表         1.传值捕获         mutable修饰          2.传引用捕获         3.当前对象this捕获         4.带初始化的捕获         5.全捕获         按值全捕获 [=]:         按引用全捕获 [&]:         三、等价于仿函数 前言 C++11引入了 lambda 函数这个概念,用来快速地构建一个闭包,闭包是函数式编程的一个概念,在函数式编程中使用闭包来实现一些高阶函数。 闭包是指一个匿名函数以及它所捕获的上下文环境的组合。闭包允许你在函数中捕获并使用周围作用域的变量,从而实现更灵活的函数行为。 使用 lambda 可以带来以下好处: 1.通过创建l

【c++】模板进阶,模板的分离编译重点讲解

【c++】模板进阶,模板的分离编译重点讲解

小编个人主页详情<—请点击 小编个人gitee代码仓库<—请点击 c++系列专栏<—请点击 倘若命中无此运,孤身亦可登昆仑,送给屏幕面前的读者朋友们和小编自己! 目录 * 前言 * 一、class和typename作为模板参数的关键字的区别 * 二、非类型模板参数 * 介绍 * 使用 * array容器的使用 * array容器与c语言数组的对比 * 三、模板的特化 * 概念引入 * 四、函数模板特化 * 五、类模板特化 * 全特化 * 偏特化 * 部分特化 * 参数更进一步限制 * 测试 * 类模板特化的应用举例 * 六、模板的分离编译 * 什么是分离编译 * 通常来讲模板为什么不能声明和定义分离 * 怎么样模板才能进行分离编译(只能缓解分离编译,本质上模板不能进行分离编译) * 模板不分离编译做法 * 七、模板的总结 * 总结 前言 【c++】STL容器-list和vector的反向迭代器的模拟实现—

特殊类的设计----《Hello C++ Wrold!》(28)--(C/C++)

特殊类的设计----《Hello C++ Wrold!》(28)--(C/C++)

文章目录 * 前言 * 设计一个不能被拷贝的类 * 设计一个只能在堆上创建对象的类 * 设计一个只能在栈上创建对象的类 * 设计一个不能被继承的类 * 设计一个只能创建一个对象的类(也叫做单例模式) * 单例模式的两种实现方法 * 饿汉模式 * 懒汉模式 前言 在 C++ 面向对象编程体系中,类是封装数据与行为的核心单元,其设计直接关系到程序的安全性、可维护性与性能表现。除了支撑常规业务逻辑的普通类,实际开发中常需面对具有特殊约束的场景:例如防止对象拷贝以规避资源重复释放风险,限定对象创建位置(仅堆或仅栈)以规范内存管理,禁止类被继承以保障核心逻辑不被篡改,或是确保类仅存在一个实例以实现全局资源统一调度 —— 这些需求的实现,正是特殊类设计的核心范畴。 本文聚焦 “特殊类设计” 这一主题,系统拆解五种典型特殊类的实现逻辑与技术细节。从 “不能被拷贝的类” 对拷贝构造函数、赋值运算符的管控,到 “只能在堆 / 栈上创建对象的类” 对构造函数与内存分配接口的限制;从 “不能被继承的类” 基于构造函数私有化(C++98)与final关键字(

安装 Microsoft Visual C++ Build Tools

安装 Microsoft Visual C++ Build Tools

Microsoft Visual C++ Build Tools下载安装 安装Microsoft Visual C++ Build Tools是为了在windows系统上编译和运行需要C++支持的程序或库(例如某些Python包,Node.js模块等)。 1.下载 打开浏览器,访问 Visual Studio Build Tools下载页面。 在页面上找到“下载”按钮,点击下载 Build Tools for Visual Studio 的安装程序(vs_BuildTools.exe)。 2. 安装 双击下载好的软件(vs_BuildTools.exe)。 点击继续。 等待下载安装。 在安装Visual Studio Build Tools的时候,选择“C++生成工具”

深度拆解 ‘High-Frequency Trading’ (HFT) 系统:解析如何在 100 纳秒内完成从网卡到 C++ 策略的响应

各位技术同仁,下午好! 今天,我们聚焦一个在金融科技领域最令人肾上腺素飙升的话题:高频交易(High-Frequency Trading, HFT)系统。具体来说,我们将深入剖析,一个HFT系统是如何在令人难以置信的100纳秒(ns)级别内,完成从网卡接收数据到C++策略响应并发出指令的整个流程。这不仅仅是速度的竞赛,更是对计算机科学、网络工程、操作系统、并发编程乃至硬件物理极限的极致探索。 作为一个编程专家,我将带大家一层一层地剥开这个“洋葱”,从硬件到软件,从内核到用户空间,揭示其背后的技术秘密。请大家保持专注,因为每一个细节都可能是在这个微秒世界中决定胜负的关键。 HFT的本质与100纳秒的挑战 首先,我们来明确HFT的定义。高频交易利用复杂的算法和高速的计算机系统,在极短的时间内执行大量订单。它的核心竞争力在于速度、低延迟、高吞吐量和强大的决策能力。常见的HFT策略包括套利、做市、事件驱动等。 而“100纳秒”这个数字,对于大多数传统应用来说,简直是天方夜谭。一个CPU周期大约是0.3-0.5纳秒,一条内存访问可能需要几十纳秒,一次磁盘I/

【探寻C++之旅】C++ 智能指针完全指南:从原理到实战,彻底告别内存泄漏

【探寻C++之旅】C++ 智能指针完全指南:从原理到实战,彻底告别内存泄漏

前言 作为 C++ 开发者,你是否曾因以下场景头疼不已?函数中new了数组,却因异常抛出导致后续delete没执行,排查半天定位到内存泄漏;多模块共享一块内存,不知道该由谁负责释放,最后要么重复释放崩溃,要么漏释放泄漏;用了auto_ptr后,拷贝对象导致原对象 “悬空”,访问时直接崩溃却找不到原因。 如果你有过这些经历,那智能指针一定是你必须掌握的现代 C++ 工具。它基于 RAII 思想,自动管理动态资源,让你无需手动delete,从根源上减少内存泄漏风险。今天,我们就从 “为什么需要智能指针” 到 “不同智能指针的实战场景”,带你系统掌握这一核心特性。 请君浏览 * 前言 * 一、智能指针的诞生:解决手动管理内存的 “千古难题” * 1.1 一个典型的内存泄露场景 * 1.2 智能指针的核心:RAII 思想 * 二、C++ 标准库智能指针:

【2024 Year-End Summary】C++自学分享

【2024 Year-End Summary】C++自学分享

目录 [ C 语言 ] [ 数据结构 ] [ 算法 ] [ C++ ] [Linux] [Mysql] [Redis 文档学习] [Docker 云原生] [Git] [Qt] 转眼大学就过了一年半,希望自己可以保持学习₍₍Ϡ(੭•̀ω•́)੭✧⃛ 在刚上大一的时候用的是纸质笔记本,后来东西越学越多,就开始使用语雀文档,文章也有部分同步到 ZEEKLOG 上了,很高兴能够对大家有所帮助~ 博客之星的文章一直不知道写些什么,想着对专栏做一个整理叭 下面的标题/网课名 就是 学习链接的传送门,自学的资料也都是免费的,开头就不多说了,学就好啦 [ C 语言 ] hh 这是多少小伙伴梦开始的地方 网课: * 【浙江大学】C语言入门与进阶 翁恺(全129讲)_哔哩哔哩_bilibili 书籍: * C Primer Plus * C

【C++】IO流

【C++】IO流

目录 * 一、C语言的输入与输出 * 二、流是什么 * 三、C++IO流 * 3.1 C++标准IO流 * 3.2 C++文件IO流 * 3.2.1 二进制读写 * 3.2.2 文本读写 * 四、stringstream的简单介绍 * 结尾 一、C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。注意宽度输出和精度输出控制。C语言借助了相应的缓冲区来进行输入与输出。如下图所示: 对输入输出缓冲区的理解: 1.可以屏蔽掉低级I/O的实现,低级I/O的实现依赖操作系统本身内核的实现,所以如果能够屏蔽这部分的差异,

C++进阶:(十六)从裸指针到智能指针,C++ 内存管理的 “自动驾驶” 进化之路

C++进阶:(十六)从裸指针到智能指针,C++ 内存管理的 “自动驾驶” 进化之路

目录 前言 一、裸指针的 “血泪史”:为什么我们需要智能指针? 1.1 内存泄漏:最常见的 “噩梦” 1.2 二次释放:致命的 “双重打击” 1.3 野指针:潜伏的 “幽灵” 1.4 异常安全:被忽略的 “隐形杀手” 1.5 智能指针的核心使命 二、智能指针的 “三驾马车”:unique_ptr、shared_ptr、weak_ptr 2.1 unique_ptr:独占所有权的 “独行侠” 2.1.1 unique_ptr 的核心原理

C++ 多线程同步之互斥锁(mutex)实战

C++ 多线程同步之互斥锁(mutex)实战

C++ 多线程同步之互斥锁(mutex)实战 💡 学习目标:掌握 C++ 标准库中互斥锁的基本用法,理解多线程同步的核心原理,能够解决多线程环境下的资源竞争问题。 💡 学习重点:std::mutex 与 std::lock_guard 的使用、死锁的产生原因及规避方法、实际场景中的同步案例实现。 48.1 多线程同步的必要性 在多线程编程中,当多个线程同时访问共享资源时,会出现资源竞争问题。 例如两个线程同时对同一个变量进行读写操作,会导致最终结果与预期不符。 这种问题被称为线程安全问题,而解决该问题的核心就是线程同步。 ⚠️ 注意事项:线程不同步会引发数据竞争,造成程序运行结果不可预测,甚至导致程序崩溃。 举个简单的反例,两个线程同时对全局变量 count 进行自增操作: #include<iostream>#include<thread>usingnamespace std;int count

【C++】C++异常

【C++】C++异常

🎬 个人主页:MSTcheng · ZEEKLOG 🌱 代码仓库 :MSTcheng · Gitee 🔥 精选专栏: 《C语言》 《数据结构》 《算法学习》 《C++由浅入深》 💬座右铭:路虽远行则将至,事虽难做则必成! 在前面的文章中,我们已经介绍了C++11的一些新特性。本文将和下一篇一起为大家讲解C++的最后两个重要主题:异常处理和智能指针。 文章目录 * 一、异常的概念及使用 * 1.1异常的概念 * 1.2异常的分类 * 1.3异常的抛出与捕获 * 1.4栈展开 * 1.5 查找匹配的处理代码 * 1.6异常重新抛出 * 1.7异常的安全问题 * 1.8异常规范 * 二、总结 一、异常的概念及使用 1.1异常的概念 异常(Exception)是指在程序执行过程中发生的意外或错误情况,