2009-09-11 20 views
9

मान लीजिए मैं शामिल होता है कि multiprocessing का उपयोग कर कई चीजें parallelize करने my_parallel_script.py नामक एक अजगर स्क्रिप्ट है और मैं निम्न आदेश के साथ चलाएँ:आप समांतर पाइथन लिपि कैसे प्रोफाइल कर सकते हैं?

python -m cProfile my_parallel_script.py 

यह माता पिता प्रक्रिया केवल के लिए उत्पादन की रूपरेखा उत्पन्न करता है। बाल प्रक्रियाओं में किए गए कॉल बिल्कुल दर्ज नहीं किए जाते हैं। क्या बाल प्रक्रियाओं को भी प्रोफाइल करना संभव है?

यदि स्रोत को संशोधित करने का एकमात्र विकल्प है, तो ऐसा करने का सबसे आसान तरीका क्या होगा?

उत्तर

8

सीप्रोफाइल केवल एक ही प्रक्रिया के भीतर काम करता है, इसलिए आपको स्वचालित रूप से बाल प्रक्रिया प्रोफाइल नहीं मिल जाएगी।

मैं अनुशंसा करता हूं कि आप बाल प्रक्रिया कोड को ट्वीक करें ताकि आप इसे एक ही प्रक्रिया के रूप में अलग से बुला सकें। फिर इसे प्रोफाइलर के तहत चलाएं। प्रोफाइलिंग करते समय आपको शायद अपने सिस्टम को बहु-प्रक्रिया चलाने की आवश्यकता नहीं है, और यह केवल एक ही बच्चे को चलाने के लिए नौकरी को सरल बना देगा।

+3

मैंने पहले से ही यह कोशिश की है, और दुर्भाग्य से मैं ** ** प्रोफाइलिंग करते समय सिस्टम बहु-प्रक्रिया चलाने की आवश्यकता है। ऐसा कुछ समय बाद काफी धीमा लगता है, लेकिन केवल जब यह मल्टीप्रोसेसिंग सक्षम के साथ चल रहा है। – Fragsworth

+3

संभावना है कि यह संसाधन विवाद है, और प्रोफाइलिंग इसे खोजने का तरीका नहीं हो सकता है। किसी भी मामले में, आप एक ही समय में सभी बाल प्रक्रियाओं को प्रोफाइल करने का प्रयास कर सकते हैं। आप बच्चे पायथन कोड में प्रोग्रामेटिक रूप से प्रोफ़ाइल का आह्वान कर सकते हैं। –

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