Pergunta

Esta questão já tem uma resposta aqui:

Eu tentei estes dois métodos:

os.system("python test.py")

subprocess.Popen("python test.py", shell=True)

Ambas as abordagens necessidade de esperar até acabamentos test.py que bloqueia processo principal. Eu sei "nohup" pode fazer o trabalho. Existe uma maneira Python para test.py de lançamento ou quaisquer outros scripts shell e deixá-lo rodando em segundo plano?

test.py Suponha que é assim:

for i in range(0, 1000000):
    print i

Ambos os.system () ou subprocess.popen () vai bloquear o programa principal até 1000000 linhas de saída exibidos. O que eu quero é deixar test.py é executado silenciosamente e exibir apenas a saída do programa principal. principal do programa pode quie enquanto test.py ainda está em execução.

Foi útil?

Solução

subprocess.Popen(["python", "test.py"]) href="http://docs.python.org/library/subprocess.html#replacing-the-os-spawn-family" rel="noreferrer"> deve funcionar .

Note-se que o trabalho ainda pode morrer quando seus principais saídas de script. Neste caso, tente subprocess.Popen(["nohup", "python", "test.py"])

Outras dicas

os.spawnlp(os.P_NOWAIT, "path_to_test.py", "test.py")
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top