You should apply 1-2 months before you're ready to work for regular (non-program) roles. Since recruiters know the recruiting process can take 2 months anyway, it's not a huge sacrifice to wait until your graduation date if you are truly the right person for the job.