Pharos
Global

GetOS - 获取操作系统信息

获取当前运行环境的操作系统和架构信息。

语法

python
os_info = GetOS()

参数

无参数。

返回值

返回操作系统信息字符串(str),格式为 "系统/架构"

可能的返回值

返回值说明
linux/amd64Linux 系统,AMD64/x86_64 架构
linux/arm64Linux 系统,ARM64 架构
darwin/amd64macOS 系统,Intel 架构
darwin/arm64macOS 系统,Apple Silicon(M1/M2)架构
windows/amd64Windows 系统,64位
windows/386Windows 系统,32位

示例

示例1: 获取系统信息

python
# 获取操作系统信息
os_info = GetOS()
Log(f"当前系统: {os_info}")
# 输出示例: darwin/arm64

示例2: 根据系统调整配置

python
os_info = GetOS()

if "linux" in os_info:
    Log("运行在 Linux 系统")
    # Linux 特定配置
    config = {"use_systemd": True}
elif "darwin" in os_info:
    Log("运行在 macOS 系统")
    # macOS 特定配置
    config = {"use_launchd": True}
elif "windows" in os_info:
    Log("运行在 Windows 系统")
    # Windows 特定配置
    config = {"use_service": True}

示例3: 检测架构

python
os_info = GetOS()

if "arm64" in os_info:
    Log("运行在 ARM64 架构(Apple Silicon 或 ARM 服务器)")
    # 针对 ARM 架构的优化
elif "amd64" in os_info or "x86_64" in os_info:
    Log("运行在 x86_64 架构")
    # 针对 x86 架构的优化

示例4: 记录环境信息

python
# 策略启动时记录完整环境信息
Log(f"========== 策略环境信息 ==========")
Log(f"操作系统: {GetOS()}")
Log(f"实盘ID: {real_trade_id}")
Log(f"策略ID: {strategy_id}")
Log(f"是否回测: {IsVirtual()}")
Log(f"启动时间: {_D()}")
Log(f"===================================")

示例5: 条件编译式执行

python
os_info = GetOS()

# 某些功能只在特定平台可用
if "linux" in os_info:
    # Linux 专有功能
    try:
        import psutil
        cpu_percent = psutil.cpu_percent(interval=1)
        Log(f"CPU 使用率: {cpu_percent}%")
    except ImportError:
        Log("psutil 库未安装")
else:
    Log(f"此功能仅在 Linux 系统可用,当前系统: {os_info}")

示例6: 平台兼容性检查

python
def check_platform_compatibility():
    """检查当前平台是否支持策略所需功能"""
    os_info = GetOS()
    supported_platforms = ["linux/amd64", "darwin/arm64", "darwin/amd64"]
    
    if os_info in supported_platforms:
        Log(f"✅ 当前平台 {os_info} 已支持")
        return True
    else:
        Log(f"⚠️  警告: 当前平台 {os_info} 未经过充分测试", level="WARNING")
        return False

# 策略启动时检查
if not check_platform_compatibility():
    Log("策略可能在当前平台上运行不稳定", level="WARNING")

示例7: 诊断信息收集

python
def collect_diagnostic_info():
    """收集完整的诊断信息"""
    import sys
    import platform
    
    info = {
        "os": GetOS(),
        "python_version": sys.version,
        "platform": platform.platform(),
        "machine": platform.machine(),
        "processor": platform.processor(),
        "is_virtual": IsVirtual(),
        "timestamp": _D()
    }
    
    Log("========== 诊断信息 ==========")
    for key, value in info.items():
        Log(f"{key}: {value}")
    Log("================================")
    
    return info

# 发生错误时收集诊断信息
try:
    # 策略代码...
    pass
except Exception as e:
    LogError(f"策略异常: {e}", exception=e)
    collect_diagnostic_info()

注意事项

  1. 格式固定: 返回格式固定为 "系统/架构" 的小写字符串

  2. 系统名称映射:

    • Linux → linux
    • macOS → darwin
    • Windows → windows
  3. 架构名称:

    • AMD64/x86_64 → amd64
    • ARM64/aarch64 → arm64
    • x86 → 386
  4. 不包含版本号: 仅返回系统类型和架构,不包含具体版本号

  5. 运行时环境: 返回的是策略运行时的系统信息,而非策略编写时的系统

相关 API

  • IsVirtual - 判断是否为回测环境
  • _D - 获取当前时间