2010-07-01 8 views
11

मैं एक तृतीय पक्ष लाइब्रेरी का उपयोग कर रहा हूं जो विभिन्न उप प्रक्रियाओं को शुरू करता है। जब कोई अपवाद होता है तो मैं सभी बाल प्रक्रियाओं को मारना चाहता हूं। मैं बाल पिड्स की सूची कैसे प्राप्त कर सकता हूं?आप पाइथन में सभी बाल प्रक्रियाओं को कैसे सूचीबद्ध करते हैं?

+0

हमें अपने ओएस बताने के लिए मदद कर सकता है, के बाद से इस मंच निर्भर –

+0

करता POSIX यदि आपको मदद की होने जा रहा है: हालांकि, यह बहुत सरल उन्हें खोजने के लिए psutil उपयोग करने के लिए है? मुझे लगता है कि कुछ लोग विंडोज़ जवाब भी जानना चाहते हैं। – Rowan

+0

देखें: http://stackoverflow.com/a/4229404/376587 –

उत्तर

1

जब आप उन्हें बनाते हैं तो अपने सभी बच्चों की प्रक्रियाओं की पिड्स लॉग करना आमतौर पर सुरक्षित होता है। बाल पीआईडी ​​सूचीबद्ध करने के लिए एक पॉजिक्स अनुपालन तरीका नहीं है। मुझे पता है कि यह पीएस उपकरण के साथ किया जा सकता है।

+2

हाँ, मुझे उम्मीद थी कि। समस्या यह है कि मैं प्रक्रियाओं को नहीं बना रहा हूं, यह तीसरी पार्टी लाइब्रेरी है। ओह अच्छा। यह एक शोस्टॉपर नहीं है। – Rowan

+0

क्या मुझे एक स्वीकृति मिल सकती है? –

+1

वास्तव में आपका उत्तर समाधान नहीं है। मुझे वास्तव में यह जानने की जरूरत है कि मुझे 'psutil.prrocess'' कैसे मिल सकता है, मुझे रिकर्सिव '' memory_info'' और 'cpu_percent'' देने के लिए, लेकिन उपप्रकार के लिए मेरा कॉल वास्तव में अन्य उपप्रोसेस (कम से कम 4 या 5 स्तर) खोलता है I सभी पीआईडी ​​का ट्रैक रखने का कोई तरीका नहीं है। – Natim

10

पर देखने के सभी बच्चों प्रक्रिया (यहां तक ​​कि पुनरावर्ती प्रक्रिया) प्राप्त कर सकते हैं आप हमेशा सभी उप-प्रक्रियाओं प्रवेश नहीं कर सकते के रूप में वे बनाई गई हैं, क्योंकि वे बदले में नई प्रक्रियाओं बना सकते हैं कि आप के बारे में पता नहीं है

import psutil 

current_process = psutil.Process() 
children = current_process.children(recursive=True) 
for child in children: 
    print('Child pid is {}'.format(child.pid)) 
+0

लिंक अपडेट करें मुझे लगता है कि _parent_ और _current_process_ समान है?) – dyomas

+0

Yup, सही करने के लिए संपादित किया गया। धन्यवाद @dyomas। –

संबंधित मुद्दे