पायथन में सिग्नल प्रोसेसिंग का वर्कफ़्लो क्या है? जब सिग्नल होता है, तो मैं एक सिग्नल हैंडलर सेट करता हूं, पाइथन मेरे फ़ंक्शन का आह्वान कैसे करता है? क्या ओएस इसे सी प्रोग्राम की तरह ही आमंत्रित करता है? यदि मैं सी में पाइथन का विस्तार करता हूं, तो क्या यह तुरंत बाधित हो जाता है?पाइथन सिग्नल को कैसे संसाधित करता है?
अब यह स्पष्ट है कि पाइथन प्रक्रिया सिग्नल को कैसे संभालती है। जब आप सिग्नल मॉड्यूल द्वारा सिग्नल सेट करते हैं, तो मॉड्यूल एक फंक्शन सिग्नल_handler ($ src/मॉड्यूल/signalmodule.c देखें) पंजीकृत करेगा, जो आपके हैंडलर को सेट करता है और इसे 1 (Handlers[sig_num].tripped = 1;
) के रूप में चिह्नित करता है, फिर Python दुभाषिया को बताने के लिए Py_AddPendingCall को कॉल करें। पायथन दुभाषिया Py_Mrr_CheckSignals को कॉल करने के लिए Py_MakePendingCalls का आह्वान करेगा जो आपके फ़ंक्शन को मुख्य लूप में कॉल करेगा ($ src/Python/ceval.c देखें)। यदि आप इस बारे में बात करना चाहते हैं तो मुझे संवाद करें: [email protected]
तो पाइथन दुभाषिया सिग्नल को संभालता है और मेरा कार्य कहता है .मैं जानना चाहता हूं कि यह कैसे होता है। मैंने ignalmodule.c पढ़ा है, अजगर funcs एक सरणी में संलग्न हैं, और PyErr_CheckSignals उन समारोहों का आह्वान करते हैं जिन्हें निकाल दिया जाता है। हालांकि, ओएस द्वारा सिग्नल भेजे जाने पर PyErr_CheckSginals कहां लगाया जाता है? – renenglish
ओएस द्वारा सिग्नल भेजे जाने पर इसे लागू नहीं किया जाता है। जब सिग्नल हैंडलर चलाया जा सकता है, तो इसे दुभाषिया में विभिन्न स्थानों में स्पष्ट रूप से बुलाया जाता है, जैसे प्रिंटिंग, उपयोगकर्ता इनपुट पढ़ने आदि। यह इंटरप्ट हैंडलर कतार चलाता है। – Keith
Thx बहुत अधिक! अब यह स्पष्ट है कि पाइथन प्रक्रिया सिग्नल को कैसे संभालती है। जब आप सिग्नल मॉड्यूल द्वारा सिग्नल सेट करते हैं, तो मॉड्यूल एक फंक्शन सिग्नल_handler ($ src/मॉड्यूल/signalmodule.c देखें) पंजीकृत करेगा, जो आपके हैंडलर को सेट करता है और इसे 1 के रूप में चिह्नित करता है (हैंडलर [sig_num] .tripped = 1;), फिर Python दुभाषिया को बताने के लिए Py_AddPendingCall को कॉल करें। पायथन दुभाषिया Py_Mrr_CheckSignals को कॉल करने के लिए Py_MakePendingCalls का आह्वान करेगा जो आपके फ़ंक्शन को मेल लूप में कॉल करेगा ($ src/Python/ceval.c देखें)। – renenglish