WindowsError: [Erro 5] Acesso negado ao tentar eliminar um subprocesso (python)

Então eu tenho um script python que executa um loop no qual ele chama um programa A através do subprocesso.Popen espera por sua saída, salva a saída e depois chama novamente e assim por diante. (Isso continua acontecendo em várias execuções definidas como entrada)

O problema é que eu tenho um timer para que, sempre que o programa A leve mais que um threshold_time específico, o script encerre o processo com process.kill () e passe para a próxima iteraçã

O problema é que, embora tudo pareça funcionar bem, mesmo para 300 execuções, às vezes recebo este erro:

    File "C:\Python27\lib\subprocess.py", line 1002, in terminate
    _subprocess.TerminateProcess(self._handle, 1)
    WindowsError: [Error 5] Access is denied

e o script morre.

A parte do script referido:

timeout = TIME_CONST
for run in runs:
    killed = False
    start = time.clock()
    p = subprocess.Popen("SOME.CMD", cwd=r"some_dir") 
    # Monitor process. If it hits threshold, kill it and go to the next run
    while p.poll() is None:
        time.sleep(20) 
        secs_passed = time.clock() - start

        ### the following was my initial buggy line ###
        #if secs_passed >= timeout: 

        ### corrected line after jedislight's answer ###
        #if the time is over the threshold and process is still running, kill it
        if secs_passed >= timeout and p.poll is None: 
            p.kill()
            killed = True  
            break
    if killed: continue   

Você tem alguma sugestão de qual pode ser o problema?

EDITAR Resposta aceita e corrigido o código. Obrigado @jedislight pelo seu feedback!

questionAnswers(1)

yourAnswerToTheQuestion