如何获取Python Xpress求解的计算时间及相关统计信息?
获取Xpress求解关键指标的方法
不需要解析冗长日志,Xpress的Python API提供了直接提取计算时间、内存、线程数的方法,完全符合你想要的简洁调用需求,具体操作如下:
1. 求解时间
求解完成后,通过getAttrib方法获取总耗时:
solve_time = xpress_problem.getAttrib('solvetime')
返回值以秒为单位,代表从求解启动到结束的总时长。
2. 内存使用信息
- 获取求解过程中占用的内存:
used_memory = xpress_problem.getAttrib('memused')
单位为MB,对应求解器运行时实际使用的内存量。
- 获取系统总可用内存:
total_memory = xpress_problem.getAttrib('totalmem')
同样以MB为单位,返回当前系统的总可用内存数值。
3. 线程数信息
获取求解时实际启用的线程数量:
thread_count = xpress_problem.getAttrib('threads')
如果需要手动设置线程数,可在求解前调用xpress_problem.setControl('threads', N)(N为目标线程数)。
完整示例代码
import xpress as xp # 构建问题(示例) prob = xp.problem() x = xp.var() prob.addVariable(x) prob.addConstraint(x >= 0) prob.setObjective(x) # 执行求解 prob.solve() # 提取关键指标 solve_time = prob.getAttrib('solvetime') used_mem = prob.getAttrib('memused') total_mem = prob.getAttrib('totalmem') threads = prob.getAttrib('threads') # 输出结果 print(f"求解耗时: {solve_time:.2f} 秒") print(f"占用内存: {used_mem} MB") print(f"总可用内存: {total_mem} MB") print(f"使用线程数: {threads}")
这些方法直接从求解器内部状态读取数据,无需处理日志中的冗余信息,调用方式简洁高效。
内容的提问来源于stack exchange,提问作者jbuddy_13
相关产品推荐
相关产品推荐

