myProcessIsRunning = poll() is None
कर
जैसा कि मुख्य उत्तर द्वारा सुझाया गया है, एक प्रक्रिया चल रही है या नहीं, यह जांचने का सबसे आसान तरीका है। (और यह ज्योथन में भी काम करता है)
यदि आपके पास जांच करने के लिए प्रक्रिया का उदाहरण नहीं है। फिर ऑपरेटिंग सिस्टम टास्कलिस्ट/Ps प्रक्रियाओं का उपयोग करें।
खिड़कियों पर, मेरे आदेश के रूप में दिखाई देगा इस प्रकार है:
filterByPid = "PID eq %s" % pid
pidStr = str(pid)
commandArguments = ['cmd', '/c', "tasklist", "/FI", filterByPid, "|", "findstr", pidStr ]
यह अनिवार्य रूप से निम्न आदेश पंक्ति के रूप में एक ही बात कर रही है:
cmd /c "tasklist /FI "PID eq 55588" | findstr 55588"
और लिनक्स पर, मैं बिल्कुल भी ऐसा ही का उपयोग कर:
pidStr = str(pid)
commandArguments = ['ps', '-p', pidStr ]
ps कमांड पहले से ही त्रुटि कोड 0/1 को वापस कर देगा n क्या प्रक्रिया मिलती है। विंडोज़ पर आपको स्ट्रिंग कमांड की आवश्यकता होती है।
यह वही दृष्टिकोण है कि followig ढेर अतिप्रवाह धागे पर चर्चा की है है:
Verify if a process is running using its PID in JAVA
नोट: आप यह तरीका अपनाते हैं, याद में
कोशिश अपने आदेश कॉल रैप करने के लिए: foundRunningProcess = subprocess।check_output (argumentsArray, ** kwargs) वापसी सच अं के रूप में अपवाद को छोड़कर: वापसी झूठी
ध्यान दें, सावधान रहना यदि आप वी.एस. कोड के साथ विकसित करने और शुद्ध पायथन और Jython का उपयोग कर रहे हैं। मेरे पर्यावरण पर, मैं इस भ्रम के तहत था कि चुनाव() विधि काम नहीं कर रही थी क्योंकि एक प्रक्रिया जिसे मैंने संदेह किया था कि वास्तव में समाप्त होना चाहिए था। इस प्रक्रिया ने वाइल्डफ्लाई लॉन्च किया था। और जब मैंने जंगली उड़ान को रोकने के लिए कहा था, तो खोल अभी भी उपयोगकर्ता के लिए "जारी रखने के लिए कोई भी कुंजी दबाएं" की प्रतीक्षा कर रहा था।
आदेश में इस प्रक्रिया बंद समाप्त करने के लिए, शुद्ध अजगर में निम्नलिखित कोड काम कर रहा था में:
print >>process.stdin, os.linesep
और:
process.stdin.write(os.linesep)
Jython पर, मैं इस प्रकार देखने के लिए इस कोड को ठीक करने के लिए किया था इस अंतर के साथ प्रक्रिया वास्तव में खत्म हो गया था। और jython.poll() ने मुझे यह बताना शुरू कर दिया कि प्रक्रिया वास्तव में समाप्त हो गई है।
['Popen.poll()'] (https://docs.python.org/2/library/subprocess.html#subprocess.Popen.poll)? – asongtoruin
@asongtoruin जो कोई भी प्रिंट नहीं करता है, भले ही प्रक्रिया समाप्त हो जाए। – ahura
प्रक्रिया समाप्त होने के बाद इसे 'कोई नहीं' प्रिंट करना बंद कर देना चाहिए। आप अपने उपप्रजाति को कैसे बुला रहे हैं? – asongtoruin