यह एक मूर्खतापूर्ण प्रश्न हो सकता है, लेकिन मैं पायथन के बारे में अपनी कुछ धारणाओं का परीक्षण कर रहा हूं और मैं इस उलझन में हूं कि निम्न कोड स्निपेट को थ्रेड में बुलाया जाने पर बाहर नहीं निकलेगा, लेकिन मुख्य धागे में कॉल करने पर बाहर निकल जाएगा।
import sys, time
from threading import Thread
def testexit():
time.sleep(5)
sys.exit()
print "post thread exit"
t = Thread(target = testexit)
t.start()
t.join()
print "pre main exit, post thread exit"
sys.exit()
print "post main exit"
Sys.exit () के लिए डॉक्स बताता है कि कॉल को पायथन से बाहर निकलना चाहिए। मैं इस कार्यक्रम के आउटपुट से देख सकता हूं कि "पोस्ट थ्रेड एग्जिट" कभी भी प्रिंट नहीं किया जाता है, लेकिन थ्रेड कॉल के बाहर निकलने के बाद भी मुख्य धागा चलता रहता है।
क्या प्रत्येक थ्रेड के लिए दुभाषिया का एक अलग उदाहरण बनाया जा रहा है, और बाहर निकलने के लिए कॉल () बस उस अलग उदाहरण से बाहर निकल रहा है? यदि हां, तो थ्रेडिंग कार्यान्वयन साझा संसाधनों तक पहुंच कैसे प्रबंधित करता है? क्या होगा अगर मैं थ्रेड से प्रोग्राम से बाहर निकलना चाहता था (ऐसा नहीं जिसे मैं वास्तव में करना चाहता हूं, लेकिन बस इतना मुझे समझ में आता है)?