كيف يمكنك ضمان تشغيل وظيفة ATEXIT المسجلة مع Apphelper.runeventloop () في Pyobjc؟

StackOverflow https://stackoverflow.com/questions/1255025

  •  12-09-2019
  •  | 
  •  

سؤال

أنا فقط أتساءل لماذا أنا مسجل وظيفة 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 وظائف، إلخ الخ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top