alt işlemi zaman aşımı ile
Burada keyfi bir komut stdout
verileri döndürüyor, ya da sıfır olmayan çıkış kodları: bir özel durum oluşturmak için Python kodu
proc = subprocess.Popen(
cmd,
stderr=subprocess.STDOUT, # merge stdout and stderr
stdout=subprocess.PIPE,
shell=True)
communicate
işlemi için çıkmak için beklemek için kullanılır:
stdoutdata, stderrdata = proc.communicate()
subprocess
modülü zaman aşımı bir süreç sayısı X fazla saniye bu nedenle, communicate
sonsuza kadar sürebilir çalışan öldürmeye özelliği desteklemiyor.
Bu nedirbasitbir Python programının Windows ve Linux üzerinde çalıştırmak demek zaman aşımı uygulamak için yolu?
CEVAP
Düşük seviyede çok ayrıntılarını bilmiyorum; ama, bu verilen python 2.6 API iş parçacığı için bekleyin olanağı sunar ve bir ayrı süreç çalışan hakkında ne işlemler sona erdirmek iş parçacığı?
import subprocess, threading
class Command(object):
def __init__(self, cmd):
self.cmd = cmd
self.process = None
def run(self, timeout):
def target():
print 'Thread started'
self.process = subprocess.Popen(self.cmd, shell=True)
self.process.communicate()
print 'Thread finished'
thread = threading.Thread(target=target)
thread.start()
thread.join(timeout)
if thread.is_alive():
print 'Terminating process'
self.process.terminate()
thread.join()
print self.process.returncode
command = Command("echo 'Process started'; sleep 2; echo 'Process finished'")
command.run(timeout=3)
command.run(timeout=1)
Benim makinede bu parçacığın çıktı
Thread started
Process started
Process finished
Thread finished
0
Thread started
Process started
Terminating process
Thread finished
-15
bu, ilk yürütme görülen yere, işlemi ikincisi ise bir süre doğru (dönüş kodu 0) bitmiş, işlem (dönüş kodu -15) sona erdirildi.
Örnek güncelleştirmesini windows; ama, bir kenara test etmedim komut bulamadım bu yana çalışması gerekir bence bu belgelerine bir şey bu iş parçacığı diyor.katılın ya da işlemi.sonlandırma desteklenmiyor.
Zaman aşımı Python bir işlev çağrısı...
Zaman aşımı Hatası önlemek için nasıl ...
Nasıl'Zamanı s.Java kullanarak bi...
Belirlemek dolar.ajax hata zaman aşımı...
Nasıl Grails uygulama için bir oturum ...