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

  • NikkoNantone

    NikkoNantone

    21 Kasım 2011
  • Peyton

    Peyton

    28 Aralık 2008
  • TROPFEST

    TROPFEST

    27 Mart 2007