كيف يمكنك ضمان تشغيل وظيفة ATEXIT المسجلة مع Apphelper.runeventloop () في Pyobjc؟
سؤال
أنا فقط أتساءل لماذا أنا مسجل وظيفة atexit ... على سبيل المثال
import atexit
atexit.register(somefunc)
...
AppHelper.runEventLoop()
بالطبع أعرف متى سوف atexit
لن تعمل. عندما أعلق AppHelper.runEventLoop()
ال atexit
يتم استدعاء الوظيفة. أنا أيضا تصفح بلدي pyobjc
البيض، ورأيت تحت __init__.py
تحت objc
حزمة التعليمات البرمجية التالية:
import atexit
atexit.register(recycleAutoreleasePool)
بحثت عن أي مرجع داخل البيض دون جدوى. لقد حاولت أيضا محيطا بتجربة أخيرة AppHelper.runEventLoop()
, ، والأوامر في الكتلة في النهاية لن تسمى.
آمل أن يساعدني شخص ما هنا.
PS على افتراض أنني لا أريد استخدام مندوب التطبيق applicationShouldTerminate:
طريقة...
المحلول
أعتقد أنك بحاجة إلى مندوبين، لأنه وإلا فإن حلقة الحدث يمكنه الخروج من العملية فجأة (نوع من مثل os._exit
) وبالتالي لا تعطي وقت تشغيل Python فرصة لتشغيل رمز الإنهاء مثل finally
شروط، atexit
وظائف، إلخ الخ.
لا تنتمي إلى StackOverflow