SORU
28 Temmuz 2009, Salı


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
28 Ocak 2011, Cuma


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ayite Atiwoto (superjiffrey)

    Ayite Atiwot

    29 EYLÜL 2010
  • DominicFear

    DominicFear

    30 Kasım 2006
  • Majestic Casual

    Majestic Cas

    28 NİSAN 2012