如何检查代码是 运行 本地还是 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
我有一个 python 脚本,它将 运行 既在本地机器上又在计算集群上。我正在寻找脚本检查的有效方法,无论它是否在本地 运行 。最好的解决方案是什么? 我想传递一些硬件信息并检查它是否发生了变化,但肯定有比这更优雅的解决方案。
您可以使用 os
模块
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