मैं अजगर के मल्टीप्रोसेसिंग पूल के साथ KeyboardInterrupt घटनाओं को कैसे संभाल सकता हूं? ये रहा एक सरल उदाहरण:
from multiprocessing import Pool
from time import sleep
from sys import exit
def slowly_square(i):
sleep(1)
return i*i
def go():
pool = Pool(8)
try:
results = pool.map(slowly_square, range(40))
except KeyboardInterrupt:
# **** THIS PART NEVER EXECUTES. ****
pool.terminate()
print "You cancelled the program!"
sys.exit(1)
print "\nFinally, here are the results: ", results
if __name__ == "__main__":
go()
ऊपर दिए गए कोड को चलाने पर, KeyboardInterrupt
जब मैं दबाता हूं तो उठ जाता है ^C
, लेकिन प्रक्रिया बस उस बिंदु पर लटकती है और मुझे इसे बाहरी रूप से मारना पड़ता है।
मैं ^C
किसी भी समय प्रेस करने में सक्षम होना चाहता हूं और सभी प्रक्रियाओं को इनायत से बाहर निकलने का कारण बनना चाहता हूं ।