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)
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)
Descrição: Executa um comando externo (como ls -l) usando o módulo subprocess.
import subprocess
print("Executando 'ls -l'")
subprocess.run(["ls", "-l"])
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()
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!")
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)
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?
1. Explique o que diferencia multiprocessing de threading no Python.
2. O que acontece se um processo pai não esperar o filho?
3. Como fork() e subprocess se diferenciam?
4. Por que monitorar uso de CPU pode ser útil em SO?
5. Como saber quais processos estão ativos no sistema?