如何检查代码是 运行 本地还是 Python 中的集群

How to check if code is run locally or on a cluster in Python

我有一个 python 脚本,它将 运行 既在本地机器上又在计算集群上。我正在寻找脚本检查的有效方法,无论它是否在本地 运行 。最好的解决方案是什么? 我想传递一些硬件信息并检查它是否发生了变化,但肯定有比这更优雅的解决方案。

您可以使用 os 模块

检查 运行 机器的 hostname
 import os
 os.system('hostname')

这会将 hostname 输出到控制台。

如果要捕获输出,请像这样使用 .popen

 a=os.popen('hostname').read()

这将 return 一个字符串,您可能需要将其编码为 utf-8 以使其可读,如下所示:

 print(a.encode('utf-8'))

但最后一点只适用于 os 语言有特殊字符的情况

对于这样的配置,您可以在集群/本地计算机上设置一个环境变量,然后让脚本检查该变量以确定它的位置:

import os

where_am_i = os.getenv('WHEREAMI')


if where_am_i == 'cluster':
    # Do the cluster stuff
else:
    # Do the local machine stuff