Есть ли способ определить функцию с помощью mpi4py?

avatar
naoki
9 августа 2021 в 05:30
113
1
0

Есть несколько модулей, которые необходимо вызывать для выполнения определенных процессов только тогда, когда они вызываются.

как:-

import os
from mpi4py import MPI
x= ["10","02","03,"04"]
def manta(int):
      os.systems("time manta ripper -l "+x[int]"")
def rip(int):
      os.systems("time rip -b -mb "+x[int]+"")
def save(int):
      os.systems("time merger -h -i "+x[int]" -l -s ")
if rank < 4:
   return(rank)

здесь для каждой функции def она должна выполняться с использованием ранга, взятого из mpi4py.

Источник
user2668284
9 августа 2021 в 07:45
1

Пожалуйста, опубликуйте исполняемый код. Кроме того, использование встроенных типов Python в качестве имен переменных — очень плохая идея. Я предполагаю, что вы хотите выполнять разные функции в зависимости от значения «ранга». Если это так, то словарь с ключом по рангу со значениями, которые соответствуют соответствующей функции, - это путь.

Ответы (1)

avatar
hc_dev
9 августа 2021 в 07:54
0

Чтобы исправить код, а также переименовать параметр (избегайте использования встроенных ключевых слов Python в качестве имен):

import os

x = ["10", "02", "03, "04"]

def manta(index):
      os.systems("time manta ripper -l " + x[index])


def rip(index):
      os.systems("time rip -b -mb " + x[index])


def save(index):
      os.systems("time merger -h -i " + x[index] + " -l -s ")

Это способ запуска каждой из 3 функций последовательно:

# only run if rank can be used as valid index (inside array x)
if rank < 4:
  manta(rank)
  rip(rank)
  save(rank)
else:
  print('Rank outside of range [0..3], given rank was: ' + str(rank))

Не знаю, для чего предназначен return:

if rank < 4:
   return(rank)