Docker虚拟机管理(3)

Python调用执行MPI

import os
import subprocess

print("-------------------------------------")
ip_other = input("please input other host's ip:")
print("-------------------------------------")

#ip_other="192.168.43.99"

def over_write_config():
    mpi_config = '/mpifile/ex/mpi_config'
    with open(mpi_config, 'r', encoding='utf-8') as f:
        ips = f.read().split('\n')
    del ips[len(ips) - 1]
    for i in range(len(ips)):
        ips[i] = ips[i][:-2]
    new_ips = []
    for i, ip in enumerate(ips):
        try:
            p = subprocess.call('ping -c 1 ' + ip, shell=True, timeout=1)
        except subprocess.TimeoutExpired:
            continue
        if p == 0:
            new_ips.append(ip)
    with open(mpi_config, 'w', encoding='utf-8') as f:
        for ip in new_ips:
            f.write(ip + ':' + str(1) + '\n')
    print('File mpi_config is updated!')
    cmd4 = 'tar czf - /mpifile/ex/mpi_config | ssh root@' + ip_other + ' tar xzf - -C /'
    try:
        p = subprocess.call('ping -c 1 ' + ip_other, shell=True, timeout=1)
    except subprocess.TimeoutExpired:
        print('IP ' + ip_other + ' can not be connectted!')
        return
    os.system(cmd4)

run_file = input("please input run file's name:")
print("-------------------------------------")
flag=0
while flag==0:
    cmd = 'mpiexec -n 20 -f /mpifile/ex/mpi_config /mpifile/ex/'+run_file
    p = subprocess.Popen(cmd, shell=True)
    try:
        p.wait(3)
    except subprocess.TimeoutExpired:
        print('Some containers may not running! please check it!')
        p.kill()
        over_write_config()
        continue
    flag=1
print("-------------------------------------")
print("Program is executed Successfully!")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值