'u öldürmeye çalışırken erişim engellendi. Bu nedenle, bir program A'yı alt işlem aracılığıyla çağıran bir döngü çalıştıran bir python betiğim var.Popen, çıkışını bekledikten sonra kaydeder. çıktı ve daha sonra tekrar arar. (Bu, giriş olarak ayarladığım bir dizi çalışma için geçerli olmaya devam ediyor)WindowsError: [Hata 5] Bir alt işlem (python)
Programın A, belirli bir eşik değerden daha fazla alması durumunda, betiğin process.kill ile işlemi sonlandırması için bir zamanlayıcım var.) ve sonraki iterasyona geçer.
File "C:\Python27\lib\subprocess.py", line 1002, in terminate
_subprocess.TerminateProcess(self._handle, 1)
WindowsError: [Error 5] Access is denied
ve ardından komut ölür:
sorun her şey hatta 300 ishal için çok iyi çalışıyor görünüyor olsa da, bazen bu hatayı alıyorum olmasıdır.
sevk komut kısmı:
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
sorunun ne olabileceği hakkında bir öneriniz var mı?
EDIT: Kabul edilen yanıt ve kodu düzeltin. Teşekkürler @jedislight geri bildiriminiz için!
Bu davranışı yeniden oluşturabilecek en küçük Python komut dosyasını gönderir misiniz? –
@Sridhar İstediğiniz kodu ekledim. – Galois
Sadece "cmd" olan "SOME.CMD" ile denedim ve çalıştı. Senin öldürmeye çalıştığın sürecin nedir? – Fenikso