Your question is Optimize Code Performance. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
You're a DevOps engineer at Checkr. A nightly script sweeps every background check that's still in a pending state and polls the vendor API for a status update, so the ops dashboard stays fresh. The list of pending checks has grown into the tens of thousands, and this script, which used to finish in a couple of minutes, now runs for several hours and is starting to overlap with the next night's run.
import json
import re
import time
import requests
def poll_pending_checks(check_ids, config_path):
processed = []
for check_id in check_ids:
with open(config_path) as f:
config = json.load(f)
session = requests.Session()
pattern = re.compile(r"^(clear|consider|pending)$")
response = session.get(
f"{config['api_base']}/checks/{check_id}",
headers={"Authorization": f"Bearer {config['api_token']}"}
)
status = response.json()["status"]
if pattern.match(status) and check_id not in processed:
processed.append(check_id)
time.sleep(2)
return processed
Explain, in concrete terms, why this takes hours instead of minutes at Checkr's current volume, and how you'd optimize it for a run over tens of thousands of pending checks.