मान लीजिए कि आप कोड के कुछ बोझी टुकड़े के साथ काम कर रहे हैं, जिस पर आप भरोसा नहीं कर सकते हैं, क्या आपकी स्क्रिप्ट के नियंत्रण को खोए बिना इसे सुरक्षित रूप से चलाने का कोई तरीका है?कोड के अविश्वसनीय टुकड़े को सुरक्षित रूप से कैसे चलाएं?
एक उदाहरण एक ऐसा फ़ंक्शन हो सकता है जो केवल कुछ समय काम करता हो और यादृच्छिक रूप से/शानदार रूप से विफल हो सकता है, आप इसे तब तक कैसे पुनः प्रयास कर सकते हैं जब तक यह काम नहीं करता? मैंने थ्रेडिंग मॉड्यूल का उपयोग करने के साथ कुछ हैकिंग की कोशिश की लेकिन मुझे अच्छी तरह से एक लटका धागा को मारने में परेशानी थी।
#!/usr/bin/env python
import os
import sys
import random
def unreliable_code():
def ok():
return "it worked!!"
def fail():
return "it didn't work"
def crash():
1/0
def hang():
while True:
pass
def bye():
os._exit(0)
return random.choice([ok, fail, crash, hang, bye])()
result = None
while result != "it worked!!":
# ???
बस कोड क्रैश कैसे शानदार हो सकता है? क्या यह एक ही पायथन दुभाषिया में अपने कोड के रूप में चलाने के लिए भी सुरक्षित है? यदि यह टूटे हुए सी एक्सटेंशन (या गैर-टूटे हुए लोगों का दुरुपयोग) का उपयोग करता है, या संभवतः पाइथन ग्लोबल्स को संशोधित करता है, तो आपको इसे उपप्रोसेसर में पूरी तरह से अलग पायथन दुभाषिया में चलाने की आवश्यकता हो सकती है। –