25 views
Skip to first unread message

Fabio Bairros

unread,
May 14, 2024, 10:45:34 AMMay 14
to python...@googlegroups.com
Saudações.
Peço desculpas se o assunto está fora do escopo da lista. Qualquer coisa, favor indicar um grupo sobre linux.

Preciso executar 2 ou 3 scripts python de forma paralela, segue um exemplo abaixo.

cat aquivo_com_programas.txt | xargs [demais parametros]

No aquivo_com_programas.txt coloquei 3 chamadas de programas em python, por exemplo:

saida1=$(python soma1 10 20)
saida2=$(python soma2 30 40)
python soma3 $saida1 saida2$

Os programas somax recebe 2 parâmetros (parcelas) e retornam a soma. O problema é que não consigo reutilizar as variáveis saida1 e saida2 para usar no programa soma3.
Como posso executar isso?


Atenciosamente,
Fabio Bairros

Professor Paiva

unread,
May 14, 2024, 11:25:02 AMMay 14
to python...@googlegroups.com
Caro Fábio,

PYTHON:

def soma_numeros(num1, num2):
    try:
        num1 = int(num1)
        num2 = int(num2)
        soma = num1 + num2
        return soma
    except ValueError:
        return "Por favor, digite apenas números inteiros."

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("Por favor, forneça dois números inteiros como argumentos.")
        sys.exit(1)

    resultado = soma_numeros(sys.argv[1], sys.argv[2])
    print(resultado)

LINUX:

resultado1=$(python soma.py 10 20)
resultado2= $(python soma.py 30 40)
soma=$((resultado1 + resultado2))

# Imprimindo o resultado da soma
echo "A soma de $resultado1 e $resultado2 é: $soma"
echo "O resultado da soma é: $resultado"

Não contém vírus.www.avast.com

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para acessar essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/CALZ%2BQOpuu03uWanN_3sk3Gqt2s%2BC-1zwXNXMbur6zxQq62mcNQ%40mail.gmail.com.

Professor Paiva

unread,
May 14, 2024, 11:25:59 AMMay 14
to python...@googlegroups.com
Caro Fábio,

PYTHON:

def soma_numeros(num1, num2):
    try:
        num1 = int(num1)
        num2 = int(num2)
        soma = num1 + num2
        return soma
    except ValueError:
        return "Por favor, digite apenas números inteiros."

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("Por favor, forneça dois números inteiros como argumentos.")
        sys.exit(1)

    resultado = soma_numeros(sys.argv[1], sys.argv[2])
    print(resultado)

LINUX:

resultado1=$(python soma.py 10 20)
resultado2= $(python soma.py 30 40)
soma=$((resultado1 + resultado2))

# Imprimindo o resultado da soma
echo "A soma de $resultado1 e $resultado2 é: $soma"

Não contém vírus.www.avast.com

Fabio Bairros

unread,
May 14, 2024, 11:41:40 AMMay 14
to python...@googlegroups.com
Boa tarde, Paiva e agradeço pelo retorno.

No entanto, preciso chamar novamente o python, na terceira linha, passando os parâmetros das duas chamadas anteriores. Pois é o teste que preciso fazer.

python soma3 $saida1 $saida2



Atenciosamente,
Fabio Bairros


Marcelo Valle

unread,
May 14, 2024, 11:46:55 AMMay 14
to python...@googlegroups.com
Fabio, 

Eu achei sua pergunta super bem formulada e bem melhor que muita pergunta de python que eu vejo na lista rs
Então, só pra dar minha posição sobre a fazer esse tipo de pergunta só porque é mais relacionada a Linux que com python - se alguém disser que é contra, eu vou discordar bastante :-) 
Agora bora pro assunto em si: você parece estar fazendo tudo correto no seu script, mas o último `$` está depois da saída 2, não deveria estar antes?

saida1=$(python soma1 10 20)
saida2=$(python soma2 30 40)
python soma3 $saida1 $saida2

A não ser que eu não tenha entendido algo. A linha:

cat aquivo_com_programas.txt | xargs [demais parametros]

Não parece ser o que você quer, se você pegar apenas as 3 linhas acima e rodar como um script shell, ele deve funcionar. Não vai rodar os programas em paralelo (nem o xargs vai), mas vai funcionar.

Agora, se você precisar rodar em paralelo no shell, precisa usar algo um pouco mais complicado, como isso:

Ou então usar o módulo subprocess e gerar paralelismo no Python.

Abracos,
Marcelo.

--
Message has been deleted
Message has been deleted

Renato Moraes

unread,
May 14, 2024, 1:32:58 PMMay 14
to Python Brasil
Renato Moraes
14:27 (há 4 minutos) 
para Python Brasil
Cara, você tem certeza que precisa executar paralelamente ou precisa executar os 3 scripts em um comando?
Pois se for paralelamente o negócio complica um pouco, porque daí você terá que utilizar algumas bibliotecas para isso.
Deixo um exemplo mais simples possível de fazer isso.

import multiprocessing
import subprocess

def run_script(script_name):
    subprocess.run(['python', script_name])

if __name__ == '__main__':
    scripts = ['script1.py', 'script2.py', 'script3.py']

    processes = []
    for script in scripts:
        process = multiprocessing.Process(target=run_script, args=(script,))
        processes.append(process)
        process.start()

    for process in processes:
        process.join()


Já se você precisar somente chamar todos com um comando, Pode usar abaixo.
Pode perceber que também utilizei a biblioteca subprocess, pois ela que será responsável por chamar os outros scripts.
Tanto a resposta anterior como essa você irá criar um novo script que irá chamar os demais.

# Importando os módulos necessários
import subprocess

# Executando os scripts em sequência
scripts = ["forms_1.py", "forms_2.py", "forms_3.py", "forms_4.py", "forms_5.py"]
for script in scripts:
    subprocess.run(["python", 'script/' + script])

Professor Paiva

unread,
May 14, 2024, 2:24:18 PMMay 14
to python...@googlegroups.com
Boa sorte aí no seu projeto. Faça a alteração 

Enviado do meu iPhone

Em 14 de mai. de 2024, à(s) 14:27, Renato Moraes <rena...@gmail.com> escreveu:

Cara, você tem certeza que precisa executar paralelamente ou precisa executar os 3 scripts em um comando?
Pois se for paralelamente o negócio complica um pouco, porque daí você terá que utilizar algumas bibliotecas para isso.
Deixo um exemplo mais simples possível de fazer isso.

import multiprocessing
import subprocess

def run_script(script_name):
    subprocess.run(['python', script_name])

if __name__ == '__main__':
    scripts = ['script1.py', 'script2.py', 'script3.py']

    processes = []
    for script in scripts:
        process = multiprocessing.Process(target=run_script, args=(script,))
        processes.append(process)
        process.start()

    for process in processes:
        process.join()

Em terça-feira, 14 de maio de 2024 às 11:45:34 UTC-3, Fabio Bairros escreveu:
Saudações.
Peço desculpas se o assunto está fora do escopo da lista. Qualquer coisa, favor indicar um grupo sobre linux.

Preciso executar 2 ou 3 scripts python de forma paralela, segue um exemplo abaixo.

cat aquivo_com_programas.txt | xargs [demais parametros]

No aquivo_com_programas.txt coloquei 3 chamadas de programas em python, por exemplo:

saida1=$(python soma1 10 20)
saida2=$(python soma2 30 40)
python soma3 $saida1 saida2$

Os programas somax recebe 2 parâmetros (parcelas) e retornam a soma. O problema é que não consigo reutilizar as variáveis saida1 e saida2 para usar no programa soma3.
Como posso executar isso?


Atenciosamente,
Fabio Bairros

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages