अजगर प्रलेखन कहते हैं:
• अजगर संकेत संचालकों हालांकि तक अतुल्यकालिक रूप से कहा जाता है, पाइथन उपयोगकर्ता चिंतित है, वे केवल वें के बीच हो सकते हैं ई "परमाणु" पायथन दुभाषिया के निर्देश। इसका मतलब है कि लंबे समय तक गणना के दौरान संकेतों को सी में लागू किया गया है (जैसे टेक्स्ट के बड़े निकायों पर नियमित अभिव्यक्ति मिलान) के लिए मनमाने ढंग से समय के लिए देरी हो सकती है।
जबकि time
का कहना है:
वास्तविक निलंबन समय का अनुरोध किया है क्योंकि किसी भी पकड़ा संकेत नींद() कि संकेत के पकड़ने दिनचर्या के निष्पादन निम्नलिखित समाप्त होगा कि कम से कम हो सकता है।
Windows पर, जाहिरा तौर पर time.sleep()
प्रलेखन के अनुसार लागू नहीं किया गया, क्योंकि एक संकेत के लिए हैंडलर नींद के दौरान प्राप्त होने पर जब तक नींद की पूरी अवधि समाप्त हो गया है कार्रवाई नहीं की है। निम्न उदाहरण:
import signal, time
def handler(signum, frame):
print('Signal handler called with signal', signum)
signal.signal(signal.SIGINT, handler)
print("signal set, sleeping")
time.sleep(10)
print("sleep done")
प्रिंट:
signal set, sleeping
Signal handler called with signal 2
sleep done
पहली पंक्ति तुरंत होने के साथ
और दूसरे दो 10 के बाद सेकंड, जब व्यवधान होता है की परवाह किए बिना।
जैसा थॉमस के सुझाव देता है, थ्रेड और सिंक्रनाइज़ेशन का उपयोग करने के लिए एक बेहतर रणनीति होगी।
क्या आप अपना कोड लिख सकते हैं, इसलिए यह 60 के समय के साथ 'थ्रेडिंग.इवेंट' पर इंतजार कर रहा है, और यदि आप प्रतीक्षा रद्द करना चाहते हैं तो उस घटना को किसी अन्य थ्रेड से हिट करें? –
पहले क्लासिक विराम चिह्न को पार करते हुए वाक्य को पढ़ें। इच्छा है कि कहीं सोकर समय रुकने का एक तरीका था। – Simon
यह मेरा कोड नहीं है। यह अनजान क्लाइंट कोड है जिसे मैं टाइमआउट के बाद रुकने की कोशिश कर रहा हूं। ऐसा लगता है कि cpython में वास्तव में कोई अच्छा तंत्र मौजूद नहीं है .. और हाँ हमने थ्रेड और उपप्रोसेस भी कोशिश की है। – mkorpela