homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author sangeeth
Recipients pitrou, sangeeth
Date 2014年07月04日.00:40:18
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1404434419.41.0.802359833018.issue21913@psf.upfronthosting.co.za>
In-reply-to
Content
Python version 2.7.7
Mac OS Darwin Kernel Version 13.2.0
I have the following code which when executed waits to be interrupted by SIGINT, SIGTERM or SIGQUIT. When an object is initialized, it creates a threading.Condition() and acquires() it! The program then registers the signal handlers where notify() and release() is called when the above mentioned signals are received. After registering the signal handlers, it calls wait() on the condition variable and block.
When I tried to stop the program with Ctrl-C, its did not respond. IOW, the _signal_handler() method did not get called. 
# start
from signal import signal, SIGINT, SIGTERM, SIGQUIT
from threading import Condition
class A:
 def __init__(self):
 self._termination_signal = Condition()
 self._termination_signal.acquire(blocking=0)
 def _signal_handler(self, signum, frame):
 print "Received terminate request - signal = {0}".format(signum)
 del frame
 self._termination_signal.notify()
 self._termination_signal.release()
 return
 def register_and_wait(self):
 signal(SIGINT, self._signal_handler)
 signal(SIGTERM, self._signal_handler)
 signal(SIGQUIT, self._signal_handler)
 print "Waiting to be interrupted!"
 self._termination_signal.wait() # control blocks here!
 print "Notified!!"
def main():
 a = A()
 a.register_and_wait()
if __name__ == "__main__":
 main()
# end
When the same code was tried in Python 3.4, it threw a "RuntimeError: cannot notify on un-acquired lock".
More information is available in this conversation in python-list mailer - https://mail.python.org/pipermail/python-list/2014-July/674350.html 
History
Date User Action Args
2014年07月04日 00:40:19sangeethsetrecipients: + sangeeth, pitrou
2014年07月04日 00:40:19sangeethsetmessageid: <1404434419.41.0.802359833018.issue21913@psf.upfronthosting.co.za>
2014年07月04日 00:40:19sangeethlinkissue21913 messages
2014年07月04日 00:40:18sangeethcreate

AltStyle によって変換されたページ (->オリジナル) /