15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

proc = run_openssl(data)

input_procs.append(proc)

hash_proc = run_md5(proc.stdout)

hash_procs.append(hash_proc)

O I/O entre os processos-filho acontecerá automaticamente uma vez que estejam

iniciados. Tudo o que precisamos fazer é esperar que mostrem na tela seus

resultados.

for proc in input_procs:

proc.communicate()

for proc in hash_procs:

out, err = proc.communicate()

print(out.strip())

>>>

b'7a1822875dcf9650a5a71e5e41e77bf3'

b'd41d8cd98f00b204e9800998ecf8427e'

b'1720f581cfdc448b6273048d42621100'

Se houver a possibilidade de os processos-filho nunca serem encerrados, ou se

algum deles bloquear algum dos pipes de entrada ou saída, certifique-se de

passar o parâmetro timeout para o método communicate. Com ele, uma exceção

será elevada caso o processo-filho não responda dentro do prazo indicado e,

assim, será fácil assassinar o filho malcriado.

proc = run_sleep(10)

try:

proc.communicate(timeout=0.1)

except subprocess.TimeoutExpired:

proc.terminate()

proc.wait()

print('Exit status', proc.poll())

>>>

Exit status -15

Infelizmente, o parâmetro timeout só está disponível do Python 3.3 em diante.

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!