Python标准库 - os (2) 进程管理
文章目录
- 3 进程管理
- 3.1 进程状态和控制
- 3.2 进程优先级
- 3.3 程序段控制
- 3.4 其他
- 4 创建子进程
- 4.1 创建子进程常见函数
- 4.2 spawn*族函数
- 4.3 exec*族函数
- 5 子进程管理
- 5.1 创建子进程触发事件
- 5.2 等待子进程执行完
- 5.3 子进程的状态
os模块提供了各种操作系统接口。包括环境变量、进程管理、进程调度、文件操作等方面。
这里整理了进程管理的方法。
参考:os模块官方文档
3 进程管理
创建和管理进程。
3.1 进程状态和控制
-
os.times
返回全局进程时间。
返回值是有5个属性的对象。user(用户时间)、system(系统时间)、children_user(所有子进程的用户时间)、children_system(所有子进程的系统时间)、elapsed(从过去的固定时间点起经过的真实时间)。
可以作为元组迭代这五个属性。>>> os.times() posix.times_result(user=0.01, system=0.0, children_user=0.0, children_system=0.0, elapsed=17890247.55)
-
os.pidfd_open(pid, flags=0)
返回一个指向设置了flags的进程pid的文件描述符。可用于执行无须竞争和信号的进程管理。 -
os.abort()
发送SIGABRT
信号到当前进程。 -
os.kill(pid, sig)
将信号sig发送至进程pid。 -
os.killpg(pgid, sig)
将信号sig发送给进程组pgid。 -
os._exit(n)
以状态码n退出进程。
标准退出方式是sys.exit(n)
。os._exit(n)
通常只用在os.fork()
生成的子进程中。
退出码常量 | 值 | 说明 |
---|---|---|
os.EX_OK | 0 | 没有发生错误 |
os.EX_USAGE | 64 | 命令使用不正确 |
os.EX_DATAERR | 65 | 输入数据不正确 |
os.EX_NOINPUT | 66 | 某个输入文件不存在或不可读 |
os.EX_NOUSER | 67 | 指定用户不存在 |
os.EX_NOHOST | 68 | 指定主机不存在 |
os.EX_UNAVAILABLE | 69 | 所需服务不可用 |
os.EX_SOFTWARE | 70 | 检测到内部软件错误 |
os.EX_OSERR | 71 | 检测到操作系统错误 |
os.EX_OSFILE | 72 | 系统文件不存在、无法打开或发生其他错误 |
os.EX_CANTCREAT | 73 | 无法创建用户指定的输出文件 |
os.EX_IOERR | 74 | 对文件进行读写时发生错误 |
os.EX_TEMPFAIL | 75 | 发生暂时性故障。 |
os.EX_PROTOCOL | 76 | 协议交换是非法、无效或无法解读的 |
os.EX_NOPERM | 77 | 没有足够的权限进行操作 |
os.EX_CONFIG | 78 | 配置错误 |
os.EX_NOTFOUND | 79 | 找不到条目 |
3.2 进程优先级
-
os.getpriority(which, who)
获取程序调度优先级。>>> os.getpriority(os.PRIO_USER, 0) -20 >>> os.getpriority(os.PRIO_PGRP, 0) 0 >>> os.getpriority(os.PRIO_PGRP, 31044) 0 >>> os.getpriority(os.PRIO_PROCESS, 31044) 0
-
os.setpriority(which, who, priority)
设置程序调度优先级。
参数which是os.PRIO_PROCESS
、os.PRIO_PGRP
或os.PRIO_USER
中的一个。
参数who是相对于which的值。 -
os.nice(increment)
进程的优先级增加指定值,返回新的优先级值。
涉及的常量说明:
os.PRIO_PROCESS
进程标识符os.PRIO_PGRP
进程组标识符os.PRIO_USER
用户ID
3.3 程序段控制
-
os.unshare(flags)
拆分进程执行上下文的部分内容,将其移入新创建的命名空间中。 -
os.setns(fd, nstype=0)
将当前线程与Linux命名空间重新关联。 -
os.plock(op)
把程序段锁定到内存中。op值决定哪些段被锁定。
3.4 其他
-
os.umask(mask)
设定当前数值掩码,并返回之前的掩码。>>> os.umask(2) 18
Linux系统在创建文件或目录时,用数值掩码来确定文件的访问权限。
$ umask 0022 $ umask -S u=rwx,g=rx,o=rx
umask值表示了需要从权限中去掉哪些权限,才是生成文件的权限值。上述的umask值生成可执行文件时,从全部权限
rwxrwxrwx
去掉-----w--w-
,文件权限为rwxr-xr-x
。 -
os.strerror(code)
根据错误码返回错误消息。未知错误码会引发ValueError。>>> os.strerror(0) 'Success' >>> os.strerror(1) 'Operation not permitted' >>> os.strerror(2) 'No such file or directory' >>> os.strerror(42) 'No message of desired type'
4 创建子进程
4.1 创建子进程常见函数
-
os.fork()
Fork出一个新进程。在子进程中返回0,父进程返回子进程的进程号。 -
os.forkpty()
Fork出一个子进程,使用新的伪终端用作子进程的控制终端。返回(pid, fd)
,子进程中pid为0,父进程中pid为新子进程的进程号。fd是伪终端主设备的文件描述符。>>> os.forkpty() (31261, 3)
-
os.popen(cmd, mode='r', buffering=-1)
打开一个通往接受命令cmd的管道。返回值是连接到该管道的已打开文件对象。
返回的文件对象只能读写文本字符串而不是字节串。
该方法基于subprocess.Popen
实现。 -
os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)
包装C库的APIposix_spawn()
,用于创建进程。
path
为可执行文件的路径;argv
是运行时接受的参数列表;env
表示使用的进程环境,为None时使用当前进程的环境。file_actions
是一个元组组成的序列,描述对子进程中指定文件描述符采取的操作。setpgroup
参数设置子进程的进程组。设为0时,子进程的进程组ID等于其进程ID。为None时,子进程继承父进程的进程组ID。resetids
为True
时,子进程的有效UID和GID会重置为父进程的实际UID和GID。为False
时保留父进程的有效UID和GID。需要在可执行文件上启用设置用户ID和组ID权限。setid
为True
时,会为posix_spawn
新建一个会话ID。setsigmask
会把信号掩码设置为指定的信号集合。不设定时,子进程使用父进程的信号掩码。setdef
参数把集合中所有信号的操作重置为默认。scheduler
需要输入元组,其中有调度器策略和携带了调度器参数的sched_param
实例。file_actions
参数表示的元组序列,每个元组的第一个元素是指定的类型指示符。元组的可选格式及说明如下:
(os.POSIX_SPAWN_OPEN, fd, path, flags, mode)
,执行os.dup2(os.open(path, flagss, mode), fd)
;
(os.POSIX_SPAWN_CLOSE, fd)
,执行os.close(fd)
;
(os.POSIX_SPAWN_DUP2, fd, new_fd)
,执行os.dup2(fd, new_fd)
;
(os.POSIX_SPAWN_CLOSEFROM, fd)
,执行os.closerange(fd, INF)
; -
os.posix_spawnp(...)
包装C库的APIposix_spawnp()
。功能类似os.posix_spawn()
。 -
os.system(command)
在shell程序中执行命令。
通过C函数system()
实现。
如果命令产生输出,会发送到解释器的标准输出流。
返回值取决于具体系统。# CentOS >>> os.system("ps")PID TTY TIME CMD 30975 pts/0 00:00:00 bash 31646 pts/0 00:00:00 python3.7 32099 pts/0 00:00:00 ps 0 # Windows >>> os.system("ipconfig")Windows IP ConfigurationWireless LAN adapter 本地连接* 1: ...
-
os.startfile(path[, operation][, arguments][, cwd][, show_cdm])
使用已关联的应用程序打开文件。仅Windows可用。
不指定operation
,类似于双击这个文件。operation
可选的值有open
、print
、edit
(针对文件)和explore
、find
(针对目录)。启动某个应用程序时,
arguments
会作为一个字符串传入。参数
cwd
用于指定工作目录,必须是绝对路径。path
的相对路径会据此解析。show_cmd
用于覆盖默认的窗口样式。
4.2 spawn*族函数
os.spawnl(mode, path, ...)
os.spawnle(mode, path, ..., env)
os.spawnlp(mode, file, ...)
os.spawnlpe(mode, file, ..., env)
os.spawnv(mode, path, args)
os.spawnve(mode, path, args, env)
os.spawnvp(mode, file, args)
os.spawnvpe(mode, file, args, env)
创建子进程,执行path或file指定的程序。
函数的l
和v
变体提供了不同的形参传递方式。形参数目固定时,使用l
变体依次传入参数;形参数目不定时,使用v
变体把参数以列表的形式传入。
结尾带有p
的函数变体会通过PATH
环境变量来定位程序file
。环境变化时,会应用新的PATH
。
不带有p
的函数变体的参数path
必须包含正确的路径。相对路径必须包含至少一个斜杠。
以e
结尾的函数变体允许输入env
,定义新进程的环境变量。不带e
的函数变体创建的新进程会使用当前进程的环境变量。
函数参数mode
可选的常量及说明:
常量 | 值 | 说明 |
---|---|---|
os.P_NOWAIT | 1 | 创建新进程后立即返回,返回值是进程ID |
os.P_NOWAITO | 3 | 创建新进程后立即返回,返回值是进程ID |
os.P_WAIT | 0 | 新进程正常退出,返回退出代码,被终止时返回-终止信号 |
os.P_DETACH | 4 | 类似os.P_NOWAIT ,但是新进程会与父进程的控制台脱离 |
os.P_OVERLAY | 2 | 新进程会替换当前进程 |
4.3 exec*族函数
os.execl(path, arg0, arg1, ...)
os.execle(path, arg0, arg1, ..., env)
os.execlp(file, arg0, arg1, ...)
os.execlpe(file, arg0, arg1, ..., env)
os.execv(path, args)
os.execve(path, args, env)
os.execvp(file, args)
os.execvpe(file, args, env)
以上函数都会执行新程序替换当前的进程。替换时,打开的文件对象和描述符都不会刷新,因此调用这类函数之前,最好使用sys.stdout.flush()
或os.fsync()
刷新它们。
5 子进程管理
5.1 创建子进程触发事件
-
os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)
注册可调用对象。在使用os.fork()
或类似的进程克隆API派生新的子进程时,这些对象会运行。每个参数表示不同的调用点:
before
指定的函数在fork子进程前调用;
after_in_parent
在fork子进程后由父进程调用;
after_in_child
在fork子进程后由子进程调用。函数注册后无法注销。第三方C代码的
fork()
调用可能不会调用这些函数。
5.2 等待子进程执行完
-
os.wait()
等待子进程执行完后返回一个元组,包含pid和退出状态。
退出状态是一个16位数字,低字节是终止该进程的信号编号,高字节是退出状态码。
不存在可被等待的子进程时,会引发ChildProcessError
。 -
os.waitid(idtype, id, options)
idtype
可选4个常量,决定如何解读id。os.P_PID
,等待进程ID为id的子进程;os.P_PGID
,等待进程组ID为id的任何子进程;os.P_ALL
,等待任何子进程,忽略id;os.P_PIDFD
,等待以文件描述符id作为标识的子进程。
options
是多个旗标的组合。要求至少有os.WEXITED
、OS.WSTOPPED
、OS.WCONTINUED
中的一个。os.WNOHANG
、os.WNOWAIT
是可选旗标。返回值对象具有以下属性:si_pid(进程ID)、si_uid(子进程的实际用户ID)、si_signo(始终为
os.SIGCHLD
)、si_status(退出状态或信号编号,取决于si_code)、si_code(可能值os.CLD_EXITED
、os.CLD_KILLED
、os.CLD_DUMPED
、os.CLD_TRAPPED
、os.CLD_STOPPED
、os.CLD_CONTINUED
)。 -
os.waitpid(pid, options)
等待进程号为pid的子进程执行完,返回一个元组,内含进程ID和退出状态。
pid
大于0时,可以获取指定进程的状态信息。pid
为0时,获取当前进程所在进程组中所有子进程的状态。pid
为-1,获取当前进程的子进程的状态。pid
小于-1时,获取进程组-pid
中所有进程的状态。options
是多个旗标的OR组合。这个函数在Windows上有不同的行为:等待pid指定的进程执行完毕,返回一个元组,包含pid和左移8位后的退出状态码。pid小于等于0会抛出异常,整数options无效。
-
os.wait3(options)
功能和os.waitpid()
类似,不需要给进程id。返回一个三元组,包括子进程的id、退出状态和资源使用信息。 -
os.wait4(pid, options)
功能和os.waitpid()
类似。返回一个三元组,包括子进程的id、退出状态和资源使用信息。
上述的函数中,options
参数用到的旗标常量及其说明:
常量 | 说明 |
---|---|
os.WCONTINUED | 若子进程从上次报告之后从作业位置继续执行,该旗标会导致子进程被报告 |
os.WEXITED | 已终结的子进程被报告 |
os.WSTOPPED | 被信号发送停止的子进程被报告 |
os.WUNTRACED | 若子进程从上次被停止后再次被停止且未被报告,该旗标会导致子进程被报告 |
os.WNOHANG | 若没有任何子进程的状态是立即可用的,该旗标会使函数立即返回 |
os.WNOWAIT | 使os.waitid() 以可等待的状态离开子进程,后续的其他wait* 函数可以被调用来获取子进程状态信息 |
5.3 子进程的状态
-
os.WCOREDUMP(status)
如果进程生成核心转储,就返回True。
status参数是进程的状态码,即由os.system()
、os.wait()
、os.waitpid()
返回的状态码,用于确定进程上发生的操作。 -
os.WIFCONTINUED(status)
如果已停止的子进程通过传送SIGCONT获得恢复,则返回True。 -
os.WIFEXITED(status)
如果进程正常退出则返回True。 -
os.WIFSTOPPED(status)
如果进程正被追踪,且是通过传送一个信号停止的就返回True。 -
os.WIFSIGNALED(status)
进程通过一个信号来终止的则返回True。 -
os.WEXITSTATUS(status)
返回进程退出状态。仅在os.WIFEXITED()
为真时使用。 -
os.WSTOPSIG(status)
返回导致进程停止的信号。仅在os.WIFSTOPPED()
为真时使用。 -
os.WTERMSIG(status)
返回导致进程终止的信号的编号。仅在os.WIFSIGNALED()
为真时使用。 -
os.waitstatus_to_exitcode(status)
把等待状态转换为退出码
进程正常退出(os.IFEXITED(status)
为真),则返回进程退出状态(os.WEXITSTATUS(status)
),返回值大于等于0。
如果进程被信号终止(os.IFSIGNALED(status)
为真),则返回终止信号的相反值(-os.WTERRMSIG(status)
)。返回值小于0。如果进程正在被追踪或
os.waitpid()
的os.WUNTRACED
选项被调用,必须先检查os.WIFSTOPPED(status)
是否为真,为真时该函数不可用。在Windows上会返回status右移8位的结果。
以上是os模块关于进程管理的方法和常量整理。
该模块的其他内容参考:
os模块:环境变量、进程所属的用户和组
os模块:调度策略、系统信息
相关文章:
Python标准库 - os (2) 进程管理
文章目录 3 进程管理3.1 进程状态和控制3.2 进程优先级3.3 程序段控制3.4 其他 4 创建子进程4.1 创建子进程常见函数4.2 spawn*族函数4.3 exec*族函数 5 子进程管理5.1 创建子进程触发事件5.2 等待子进程执行完5.3 子进程的状态 os模块提供了各种操作系统接口。包括环境变量、进…...
单细胞-第四节 多样本数据分析,下游画图
文件在单细胞\5_GC_py\1_single_cell\2_plots.Rmd 1.细胞数量条形图 rm(list ls()) library(Seurat) load("seu.obj.Rdata")dat as.data.frame(table(Idents(seu.obj))) dat$label paste(dat$Var1,dat$Freq,sep ":") head(dat) library(ggplot2) lib…...
【2024年华为OD机试】(B卷,100分)- 热点网站统计(Java JS PythonC/C++)
一、问题描述 题目描述 企业路由器的统计页面需要动态统计公司访问最多的网页URL的Top N。设计一个算法,能够高效动态统计Top N的页面。 输入描述 每一行都是一个URL或一个数字: 如果是URL,代表一段时间内的网页访问。如果是数字N&#…...
脚本运行禁止:npm 无法加载文件,因为在此系统上禁止运行脚本
问题与处理策略 1、问题描述 npm install -D tailwindcss执行上述指令,报如下错误 npm : 无法加载文件 D:\nodejs\npm.ps1,因为在此系统上禁止运行脚本。 有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_…...
AI软件栈:LLVM分析(一)
文章目录 AI 软件栈后端编译LLVM IRLLVM的相关子项目AI 软件栈后端编译 AI软件栈的后端工作通常与硬件架构直接相关,为了实现一个既能适配现代编程语言、硬件架构发展的目标,所以提出了LLVM具备多阶段优化能力提供基础后端描述,便于进行编译器开发兼容标准编译器的行为LLVM …...
【Elasticsearch】 Intervals Query
Elasticsearch Intervals Query 返回基于匹配术语的顺序和接近度的文档。 intervals 查询使用 匹配规则,这些规则由一小组定义构建而成。这些规则然后应用于指定 field 中的术语。 这些定义生成覆盖文本中术语的最小间隔序列。这些间隔可以进一步由父源组合和过滤…...
Ansys Maxwell:采用对称性的双转子轴向磁通电机
轴向磁通电机因其功率密度高于相同重量的传统径向磁通电机而变得非常受欢迎,并且在电动汽车和航空应用中非常高效且具有成本效益。功率密度是输出功率与机器体积的比率。对于给定尺寸的机器,轴向磁通电机提供更大的扭矩和功率,或者对于给定的…...
你的连接不是专用连接
当你打开网站看到如下提示,说明SSL证书到期了。 攻击者可能试图www窃取你的信息(例如、密码、消息或信用卡)。详细了解此警告 NET::ERR_CERT_DATE_INVALID 此服务器无法证明它是WWW ;它的安全证书已于2天前到期。这可能是错误配置或攻击者…...
CSS核心
CSS的引入方式 内部样式表是在 html 页面内部写一个 style 标签,在标签内部编写 CSS 代码控制整个 HTML 页面的样式。<style> 标签理论上可以放在 HTML 文档的任何地方,但一般会放在文档的 <head> 标签中。 <style> div { color: r…...
AI常见的算法和例子
人工智能(AI)中常见的算法分为多个领域,如机器学习、深度学习、强化学习、自然语言处理和计算机视觉等。以下是一些常见的算法及其用途: 例子代码:纠结哥/pytorch_learn 1. 机器学习 (Machine Learning) 监督学习 (S…...
无公网IP 外网访问 本地部署夫人 hello-algo
hello-algo 是一个为帮助编程爱好者系统地学习数据结构和算法的开源项目。这款项目通过多种创新的方式,为学习者提供了一个直观、互动的学习平台。 本文将详细的介绍如何利用 Docker 在本地安装部署 hello-algo,并结合路由侠内网穿透实现外网访问本地部署…...
【QT】 控件 -- 显示类
🔥 目录 [TOC]( 🔥 目录) 1. 前言 2. 显示类控件2.1 Label 1、显示不同文本2、显示图片3、文本对齐、自动换行、缩进、边距4、设置伙伴 3.2 LCD Number 3.3 ProgressBar 3.4 Calendar Widget 3. 共勉 🔥 1. 前言 之前我在上一篇文章【QT】…...
AI语言模型竞争加剧:新秀崛起 格局生变
标题:AI语言模型竞争加剧:新秀崛起 格局生变 文章信息摘要: AI语言模型领域呈现加速发展和分化态势。在LMSYS排行榜上,Claude 3 Opus超越GPT-4 Turbo,DBRX超越Mixtral成为最佳开源模型,显示领先位置更替频…...
RK3568使用opencv(使用摄像头捕获图像数据显示)
文章目录 一、opencv相关的类1. **cv::VideoCapture**2. **cv::Mat**3. **cv::cvtColor**4. **QImage**5. **QPixmap**总结 二、代码实现 一、opencv相关的类 1. cv::VideoCapture cv::VideoCapture 是 OpenCV 中用于视频捕捉的类,常用于从摄像头、视频文件、或者…...
leetcode——排序链表(java)
给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4] 示例 2: 输入:head [-1,5,3,4,0] 输出:[-1,0,3,4,5] 示例 3: …...
Windows安装Miniconda和PySide6以及配置PyCharm
目录 1. 选择Miniconda 2. 下载Miniconda 3. 安装Miniconda 4. 在base环境下创建pyside6环境 5. 安装pyside6环境 6. 配置PyCharm环境 7. 运行第一个程序效果 1. 选择Miniconda 选择Miniconda而没有选择Anaconda,是因为它是一个更小的Anaconda发行版&#x…...
floodfill算法(6题)
本质就是找出性质相似的连通块 目录 1.图像渲染 2.岛屿数量 3.岛屿的最大面积 4.被围绕的区域 5.太平洋大西洋水流问题 6.扫雷游戏 1.图像渲染 733. 图像渲染 - 力扣(LeetCode) 我们使用深度优先遍历去遍历即可,也不需要返回值。 值得…...
Spring集成Redis|通用Redis工具类
一、基础使用 概述 在SpringBoot中一般使用RedisTemplate提供的方法来操作Redis。那么使用SpringBoot整合Redis需要 那些步骤呢。 1、 JedisPoolConfig (这个是配置连接池) 2、 RedisConnectionFactory 这个是配置连接信息,这里的RedisConnectionFactory是一个接 …...
python:洛伦兹变换
洛伦兹变换(Lorentz transformations)是相对论中的一个重要概念,特别是在讨论时空的变换时非常重要。在四维时空的背景下,洛伦兹变换描述了在不同惯性参考系之间如何变换时间和空间坐标。在狭义相对论中,洛伦兹变换通常…...
题单:插入排序
题目描述 给定 n 个元素的数组(下标从1开始计),请使用插入排序对其进行排序(升序)。 输入格式 两行,第一行为一个整数 n,表示元素的个数。 第二行 n 个空格分隔的整数,表示数组的…...
【Spring】Spring启示录
目录 前言 一、示例程序 二、OCP开闭原则 三、依赖倒置原则DIP 四、控制反转IOC 总结 前言 在软件开发的世界里,随着项目的增长和需求的变化,如何保持代码的灵活性、可维护性和扩展性成为了每个开发者必须面对的问题。传统的面向过程或基于类的设计…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.30 性能巅峰:NumPy代码优化全攻略
1.30 性能巅峰:NumPy代码优化全攻略 目录 #mermaid-svg-CMVXy3CN2tNmW8RJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-CMVXy3CN2tNmW8RJ .error-icon{fill:#552222;}#mermaid-svg-CMVXy3CN2tNmW8RJ …...
C#方法(练习)
1.定义一个函数,输入三个值,找出三个数中的最小值 2.定义一个函数,输入三个值,找出三个数中的最大值 3.定义一个函数,输入三个值,找出三个数中的平均值 4.定义一个函数,计算一个数的 N 次方 Pow(2, 3)返回8 5.传入十一…...
Node.js 的底层原理
Node.js 的底层原理 1. 事件驱动和非阻塞 I/O Node.js 基于 Chrome V8 引擎,使用 JavaScript 作为开发语言。它采用事件驱动和非阻塞 I/O 模型,使其轻量且高效。通过 libuv 库实现跨平台的异步 I/O,包括文件操作、网络请求等。 2. 单线程事…...
react native在windows环境搭建并使用脚手架新建工程
截止到2024-1-11,使用的主要软件的版本如下: 软件实体版本react-native0.77.0react18.3.1react-native-community/cli15.0.1Android Studio2022.3.1 Patch3Android SDKAndroid SDK Platform 34 35Android SDKAndroid SDK Tools 34 35Android SDKIntel x…...
实战:如何快速让新网站被百度收录?
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/22.html 要让新网站快速被百度收录,可以采取以下实战策略: 一、网站基础优化 网站结构清晰:确保网站的结构简洁清晰,符合百度的抓取规则。主…...
Nuxt:利用public-ip这个npm包来获取公网IP
目录 一、安装public-ip包1.在Vue组件中使用2.在Nuxt.js插件中使用public-ip 一、安装public-ip包 npm install public-ip1.在Vue组件中使用 你可以在Nuxt.js的任意组件或者插件中使用public-ip来获取公网IP。下面是在一个Vue组件中如何使用它的例子: <template…...
572. 另一棵树的子树
前导题:100. 相同的树 回顾一下 判断两棵二叉树相同,根结点相同 且 左子树相同 且 右子树相同。 于是判断如下: 根结点都为null,返回true根结点不都为null,返回false根结点都不为null,但是值不相同&#…...
LLMs之WebRAG:STORM/Co-STORM的简介、安装和使用方法、案例应用之详细攻略
LLMs之WebRAG:STORM/Co-STORM的简介、安装和使用方法、案例应用之详细攻略 目录 STORM系统简介 1、Co-STORM 2、更新新闻 STORM系统安装和使用方法 1、安装 pip安装 直接克隆GitHub仓库 2、模型和数据集 两个数据集 FreshWiki数据集 WildSeek数据集 支持…...
菜鸟之路Day11-12一一集合进阶(四)
菜鸟之路Day11-12一一集合进阶(四) 作者:blue 时间:2025.1.29-1.30 文章目录 菜鸟之路Day11-12一一集合进阶(四)0.概述1.可变参数2.Collections3.综合练习4.不可变的集合5.Stream流 0.概述 内容学习自黑…...
在Ubuntu下编译VLC
参考链接: https://blog.csdn.net/zyhse/article/details/113662686...
python开发,最好的环境是什么
目录 1. 集成开发环境(IDE) 1.1 PyCharm 1.2 Visual Studio Code (VSCode) 2. 文本编辑器 2.1 Sublime Text 2.2 Vim/NeoVim 3. 虚拟环境管理 4. 版本控制与协作 5. 容器化开发 6. 项目管理与依赖管理工具 7. 单元测试与调试 最佳组合推荐 …...
Maui学习笔记- SQLite简单使用案例02添加详情页
我们继续上一个案例,实现一个可以修改当前用户信息功能。 当用户点击某个信息时,跳转到信息详情页,然后可以点击编辑按钮导航到编辑页面。 创建项目 我们首先在ViewModels目录下创建UserDetailViewModel。 实现从详情信息页面导航到编辑页面…...
创建前端项目的方法
目录 一、创建前端项目的方法 1.前提:安装Vue CLI 2.方式一:vue create项目名称 3.方式二:vue ui 二、Vue项目结构 三、修改Vue项目端口号的方法 一、创建前端项目的方法 1.前提:安装Vue CLI npm i vue/cli -g 2.方式一&…...
好用的AI/解析网站
文件解析 json文件解析:http://www.yunjson.com/jsoncheck/...
C语言练习(31)
有5个学生,每个学生有3门课程的成绩,从键盘输入以上数据(包括学号、姓名、3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。 设5名学生的学号、姓名和3门课程成绩如下&am…...
《深入浅出HTTPS》读书笔记(31):HTTPS和TLS/SSL
《深入浅出HTTPS》读书笔记(31):HTTPS和TLS/SSL TLS/SSL协议和应用层协议无关,它只是加密应用层协议(比如HTTP)并传递给下层的TCP。 HTTP和TLS/SSL协议组合在一起就是HTTPS, HTTPS等…...
SpringBoot AOP 和 事务
SpringBoot 整合 AOP 动态代理技术 JDK 动态代理 JDK 动态代理是 Java 自带的一种代理方式。它要求目标类必须有接口,基于这个接口,JDK 在运行时会动态生成一个代理对象。这个代理对象和目标对象就像 “拜把子” 的兄弟,因为它们都实现了相同…...
如何使用Python调用大语言模型的API接口?
以下是使用 Python 调用几种常见大语言模型 API 接口的详细步骤和示例代码: 1. 调用 OpenAI 的 GPT 模型 API OpenAI 提供了强大的 GPT 系列模型,使用其 API 需要先注册 OpenAI 账号并获取 API 密钥。 步骤: 安装openai库:pip…...
如何监控ubuntu系统某个程序的运行状态,如果程序出现异常,对其自动重启。
在Ubuntu系统中,可以通过编写脚本结合cron或systemd来监控程序的运行状态,并在程序异常时自动重启。以下是具体步骤: 方法一:使用Shell脚本和Cron 编写监控脚本 创建一个Shell脚本来检查程序是否运行,并在程序异常时重…...
Kafka 压缩算法详细介绍
文章目录 一 、Kafka 压缩算法概述二、Kafka 压缩的作用2.1 降低网络带宽消耗2.2 提高 Kafka 生产者和消费者吞吐量2.3 减少 Kafka 磁盘存储占用2.4 减少 Kafka Broker 负载2.5 降低跨数据中心同步成本 三、Kafka 压缩的原理3.1 Kafka 压缩的基本原理3.2. Kafka 压缩的工作流程…...
启元世界(Inspir.ai)技术浅析(二):深度强化学习
深度强化学习(Deep Reinforcement Learning, DRL)是启元世界在人工智能领域的一项核心技术,广泛应用于游戏AI、智能决策等领域。 一、状态(State) 1.1 概念与作用 **状态(State)**是指智能体对环境的感知,是智能体进行决策的基础。在深度强化学习中,状态通常是一个高…...
在K8s中部署动态nfs存储provisioner
背景 之前,我已经在一台worker node上安装了local lvm 的provisioner来模拟需要本地高IOPS的数据库等stafeful应用的实现。 为了后续给虚拟机里的K8s集群安装可用的metrics和logs监控系统(metrics和logs的时序数据库需要永久存储)࿰…...
SQL注入漏洞之绕过[前端 服务端 waf]限制 以及 防御手法 一篇文章给你搞定
目录 绕过手法 前端代码绕过 后端代码绕过 各种字段进行验证 union 大小写绕过 双写逃过 强制类型判断 引号特殊编码处理。 内联注释绕过 注释符绕过 or/and绕过 空格绕过 防御SQL注入的方法 使用预编译语句 使用存储过程 检查数据类型 绕过手法 前端代码绕过…...
C++ 写一个简单的加减法计算器
************* C topic:结构 ************* Structure is a very intersting issue. I really dont like concepts as it is boring. I would like to cases instead. If I want to learn something, donot hesitate to make shits. Like building a house. Wh…...
Effective C++ 规则50:了解 new 和 delete 的合理替换时机
1、背景 在 C 中,new 和 delete 是动态分配内存的核心操作符。然而,直接使用它们有时会增加程序的复杂性,甚至导致内存泄漏和其他问题。因此,了解何时替换 new 和 delete 并选择更适合的内存管理策略,是编写高效、健壮…...
水果实体店品牌数字化:RWA + 智能体落地方案
一、方案背景 随着数字化技术的迅猛发展,实体零售行业正面临前所未有的挑战与机遇。传统的零售模式难以满足消费者对个性化、便捷化、智能化的需求,尤其是在水果等生鲜商品领域,如何通过技术手段提升运营效率、增强顾客体验、拓宽盈利模式&a…...
Docker小游戏 | 使用Docker部署FC-web游戏模拟器
Docker小游戏 | 使用Docker部署FC-web游戏模拟器 前言一、项目介绍项目简介项目预览二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署FC-web游戏模拟器下载镜像创建容器检查容器状态检查服务端口安全设置四、访问FC-web游戏模拟器试玩游戏FC游戏的操作方法…...
【视频+图文详解】HTML基础3-html常用标签
图文教程 html常用标签 常用标签 1. 文档结构 <!DOCTYPE html>:声明HTML文档类型。<html>:定义HTML文档的根元素。<head>:定义文档头部,包含元数据。<title>:设置网页标题,浏览…...
年化19.3%策略集|ctpbee_api替换成openctp整合backtrader实盘方案(代码+数据)
原创内容第782篇,专注量化投资、个人成长与财富自由。 昨天我们把backtraderctpbee的实盘整合代码跑通了,年化19.3%,回撤仅8%的实盘策略,以及backtrader整合CTPBee做实盘(附python代码和数据) 这两周我们加…...