Как проверить, выполняется ли код локально или на кластере в Python - PullRequest
1 голос
/ 25 марта 2019

У меня есть скрипт Python, который будет запускаться как на локальной машине, так и на вычислительном кластере.Я ищу эффективный способ проверки сценария, запущен ли он локально или нет.Каково было бы лучшее решение для этого?Я думал о том, чтобы передать некоторую информацию об оборудовании и проверить, изменилась ли она, но наверняка должно быть более элегантное решение, чем это.

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Для конфигурации, подобной этой, вы можете установить переменную среды на кластере / вашем локальном компьютере, а затем выполнить скрипт для проверки этой переменной, чтобы определить, где она находится:

import os

where_am_i = os.getenv('WHEREAMI')


if where_am_i == 'cluster':
    # Do the cluster stuff
else:
    # Do the local machine stuff
1 голос
/ 25 марта 2019

Вы можете проверить имя хоста машины, на которой он работает, с помощью модуля os

 import os
 os.system('hostname')

это выведет имя хоста на консоль.

Если вы хотите захватить вывод, используйте .popen примерно так:

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

это вернет строку, которую вам, возможно, придется закодировать в utf-8, чтобы сделать ее читаемой следующим образом:

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

Но этот последний бит действительно применим только в том случае, если ваш язык ОС содержит специальные символы

...