2010-06-16 3 views
5

मुझे एक लंबी पाइथन लिपि मिली है जिसे मैं एक और पायथन स्क्रिप्ट से समाप्त करने में सक्षम होना चाहता हूं। आदर्श रूप से जो मैं खोज रहा हूं वह पहली स्क्रिप्ट में एक प्रक्रिया आईडी सेट करने का तरीका है और यह देखने में सक्षम है कि यह उस आईडी के माध्यम से दूसरे आईडी से चल रहा है या नहीं। इसके अतिरिक्त, मैं उस लंबी चल रही प्रक्रिया को समाप्त करने में सक्षम होना चाहता हूं।एक अन्य पायथन लिपि से एक पायथन लिपि को समाप्त करें

ऐसा करने के लिए कोई भी शॉर्ट शॉर्टकट मौजूद है?

इसके अलावा, मैं एक विंडोज वातावरण में काम कर रहा हूं।

मैं अभी हाल ही में एक वैकल्पिक जवाब मिला: Check to see if python script is running

उत्तर

5

आप के माध्यम से

import os 
os.getpid() 

अपनी खुद की पीआईडी ​​(प्रक्रिया पहचानकर्ता) मिल सकता है और यूनिक्स में

import os, signal 
os.kill(5383, signal.SIGKILL) 

एक प्रक्रिया को मारने के लिए विंडोज़ में मारने के लिए

import subprocess as s 
def killProcess(pid): 
    s.Popen('taskkill /F /PID {0}'.format(pid), shell=True) 

आप अन्य प्रोग्राम में पीआईडी ​​भेज सकते हैं या आप अन्य स्क्रिप्ट के नाम को ढूंढने के लिए प्रक्रिया सूची में खोज सकते हैं और उपर्युक्त स्क्रिप्ट के साथ इसे मार सकते हैं।

मुझे उम्मीद है कि आपकी मदद करता है।

+0

os.kill एक यूनिक्स केवल ऑपरेशन है। – Nick

+0

os.kill नकल किया जा सकता है: http://docs.python.org/faq/windows.html#how-do-i-emulate-os-kill-in- विन्डोज़ – Nick

1

आप subprocess module देख रहे हैं।

import subprocess as sp 

extProc = sp.Popen(['python','myPyScript.py']) # runs myPyScript.py 

status = sp.Popen.poll(extProc) # status should be 'None' 

sp.Popen.terminate(extProc) # closes the process 

status = sp.Popen.poll(extProc) # status should now be something other than 'None' ('1' in my testing) 

subprocess.Popen बाहरी अजगर स्क्रिप्ट, एक कंसोल या टर्मिनल में 'अजगर myPyScript.py' टाइप के बराबर होता है।

प्रक्रिया अभी भी चल रही है, और (मेरे लिए) 1 अगर यह स्क्रिप्ट के भीतर से बंद कर दिया गया है तो subprocess.Popen.poll (extProc) की स्थिति 'कोई नहीं' होगी। स्थिति के बारे में निश्चित नहीं है कि यह एक और तरीका बंद कर दिया गया है।