
O módulo subprocess permite gerar novos processos, conectar-se aos seus pipes de entrada/saída/erro e obter seus códigos de retorno. Este módulo pretende substituir vários módulos e funções mais antigas, tais como: os.system e os.spawn* .
subprocess para compilar e rodar código C++Nese caso, vamos usar métodos mais antigos por questões de compatibilidade, algumas funções só estão disponíveis a partir do Python 3.5, por exemplo a função run().
Suponhamos que você possua esse código exemplo em C++
main.cpp
#include <iostream>
#include <vector>
class Code {
  std::string m_first{};
  std::string m_last{};
  int         m_sid{};  
  int         m_month{};
  public:
  Code(){}
  Code(std::string first,std::string last,int sid,int month)
    : m_first(first)
      , m_last(last)
      , m_sid(sid)
      , m_month(month) {
      }
  void show(){
    std::cout << m_first << " "
      << m_last  << " "
      << m_sid   << " "
      << m_month << '\n';
  }
};
int main( int argc , char **argv ){
  std::vector<Code> codes;
  Code code1("Marcos", "Oliveira", 2022, 01);
  Code code2("Bjarne", "Stroustroup", 1979, 04);
  codes.push_back(code1);
  codes.push_back(code2);
  for( Code c : codes){
    c.show();
  }
  return EXIT_SUCCESS;
}Ele exibe somente dados de cadastrados.
Agora vamos compilar e rodar o código via Python:
main.py e importamos o módulo subprocessimport subprocess call() para compilarmos o código:subprocess.call(["g++", "main.cpp"]) subprocess.call("./a.out") O código completo seria de 3 básicas linhas:
import subprocess
subprocess.call(["g++", "main.cpp"]) 
subprocess.call("./a.out") Agora rode:
python main.pyE vai parecer que o código C++ rodou em tempo de execução.
Agora você percebeu que C++ foi só um exemplo e que o subprocess você pode usar para outras linguagens e situações também, né?!
Para mais informações acesse: https://docs.python.org/3/library/subprocess.html .