terminal Módulo: Processos em Python

1. Listando Processos com psutil

Descrição: Usa a biblioteca psutil para listar processos ativos com PID, nome e usuário.

Requer: pip install psutil

import psutil

for proc in psutil.process_iter(['pid', 'name', 'username']):
    print(proc.info)

2. Criando Processo com os.fork()

Descrição: Demonstra a criação de um processo filho com os.fork(). Funciona apenas em sistemas UNIX/Linux.

import os

print("Pai:", os.getpid())
pid = os.fork()

if pid == 0:
    print("Filho:", os.getpid())
else:
    print("Pai criou o filho:", pid)

3. Executando Subprocesso

Descrição: Executa um comando externo (como ls -l) usando o módulo subprocess.

import subprocess

print("Executando 'ls -l'")
subprocess.run(["ls", "-l"])

4. Múltiplos Processos com multiprocessing

Descrição: Executa várias tarefas em paralelo, com processos isolados usando o módulo multiprocessing.

from multiprocessing import Process
import os

def tarefa():
    print(f"PID={os.getpid()}, PPID={os.getppid()}")

processos = []
for i in range(3):
    p = Process(target=tarefa)
    p.start()
    processos.append(p)

for p in processos:
    p.join()

5. Sleep (Simular Bloqueio)

Descrição: Simula um processo em estado de espera (bloqueado) por 5 segundos.

import os, time

print("Executando", os.getpid())
time.sleep(5)
print("Finalizado!")

6. Monitor de CPU

Descrição: Monitora o uso da CPU em tempo real usando psutil.

Requer: pip install psutil

import psutil, time

while True:
    print(f"Uso de CPU: {psutil.cpu_percent()}%")
    time.sleep(1)

Quiz

1. Qual função cria um novo processo em sistemas Unix?


2. Qual módulo permite a execução de outro programa?


3. Qual comando simula bloqueio em processos?


4. O que o método join() faz?


5. Qual biblioteca fornece informações do sistema e processos?

Perguntas Descritivas

1. Explique o que diferencia multiprocessing de threading no Python.

multiprocessing cria processos com memória separada, permitindo execução real em paralelo; threading compartilha memória e é afetado pelo GIL.

2. O que acontece se um processo pai não esperar o filho?

O processo filho pode virar zumbi até que o pai leia seu status de término.

3. Como fork() e subprocess se diferenciam?

fork duplica o processo atual; subprocess cria um novo processo executando um programa externo.

4. Por que monitorar uso de CPU pode ser útil em SO?

Ajuda a identificar gargalos de desempenho, detectar loops infinitos ou sobrecarga de processos.

5. Como saber quais processos estão ativos no sistema?

Com bibliotecas como psutil, podemos iterar e imprimir informações dos processos em execução.