Ipython: منع النواة من إرسال الكثير من الإخراج إلى الواجهة الأمامية للكمبيوتر الدفتري

تم إنشاؤها على ٢٢ أكتوبر ٢٠١٤  ·  19تعليقات  ·  مصدر: ipython/ipython

نظرًا لحالة PEBKAC ، قمنا بإنشاء دفتر ملاحظات كبير (4.6 ميجابايت) به الكثير من المطبوعات التي لن يتم تحميلها بعد الآن في Safari و Firefox. Safari لا يعود إليّ على الإطلاق ، فايرفوكس بعد فترة يخبرني أن النص لا يستجيب. يمكن أن يقوم Chrome في النهاية بتحميله ، حتى أتمكن من استخدام وظيفة الإخراج الواضح للتخلص من ميغا بايت من النص.
لذلك ، لم أعد بحاجة إلى المساعدة حقًا ، لكنني كنت أفكر في أنك ربما تكون مهتمًا بإلقاء نظرة على هذا البرنامج النصي بالشكل المكسور لمعرفة ما إذا كان هناك أي شيء يمكن فعله لجعل الكمبيوتر الدفتري يحمي نفسه من مثل هذا الحماقة.
قمت بتحميل البرنامج النصي المكسور هنا: https://gist.github.com/8be664570dd2100310d6

bug notebook

التعليق الأكثر فائدة

سيكون من الرائع أن يقوم IPython بأمرين للمساعدة في ذلك:

  • "يقوم برنامجك بإنشاء قدر كبير من المخرجات ؛ هل تريد متابعة التشغيل؟"
  • تحميل الكمبيوتر الدفتري: "يحتوي هذا الكمبيوتر الدفتري على قدر كبير من المخرجات ؛ هل تريد محو خلايا الإخراج أم التحميل بشكل طبيعي؟"

ال 19 كومينتر

شكرا ، سوف ننظر في الأمر.

راجع https://github.com/ipython/ipython/issues/6516 للحصول على ملحق anti while True loop ، كما يمكنك تشغيل إخراج واضح من سطر أوامر nbconvert والقيام بـ ipynb -> ipynb إذا حدث مرة أخرى.

سيكون من الرائع أن يقوم IPython بأمرين للمساعدة في ذلك:

  • "يقوم برنامجك بإنشاء قدر كبير من المخرجات ؛ هل تريد متابعة التشغيل؟"
  • تحميل الكمبيوتر الدفتري: "يحتوي هذا الكمبيوتر الدفتري على قدر كبير من المخرجات ؛ هل تريد محو خلايا الإخراج أم التحميل بشكل طبيعي؟"

Carreau أعتقد أن هذا يجب أن يكون في الأسئلة الشائعة! باستخدام حيوانات الباندا ، من السهل جدًا إنشاء مخطط يزيد عن 200 عمود مع 130.000 نقطة بيانات ... وإذا كانت هذه المؤامرة مضمنة ، فإنها تقوم بـ "دبس" المتصفح. ؛)

حسنًا ، nbconvert --to= الخيار لا يذكر .ipynb كناتج محتمل وفقط استخدامه عند فشل --to=ipynb .

استخراج nbconvert --help-all :

--to=<CaselessStrEnum> (NbConvertApp.export_format)
    Default: 'html'
    Choices: ['custom', 'html', 'latex', 'markdown', 'notebook', 'pdf', 'python', 'rst', 'slides']

أفترض أنك تقصد notebook ؟ هل يجب علينا الاسم المستعار ipynb إلى notebook ؟

أرى هذا كثيرًا مع طلابي (وأنا). كيفية كسر ipython في 13 حرفًا:

def f():
    f()
f()

1000 قائمة مكدس تنشئ دفتر ملاحظات مجمداً في Chrome. ولكن بعد ذلك لا يمكن للمرء فتح دفتر ملاحظات جديد لتشغيل أوامر التحويل هذه ، لأن لوحة القيادة والكمبيوتر الدفتري مغلقان ... بعد 5 دقائق ... تم إطلاقهما! الآن أحاول مسح الإخراج من الخلية ... 5 دقائق أخرى ... حتى إغلاق علامة تبويب دفتر الملاحظات لا يساعد.

ما الإصدار؟ لدي 2.3.1 آخر إصدار رسمي وهو يحتوي على هذا:

--to=<CaselessStrEnum> (NbConvertApp.export_format)
    Default: 'html'
    Choices: ['custom', 'html', 'latex', 'markdown', 'python', 'rst', 'slides']
    The export format to be used.

أنا أستخدم ipython nbconvert ، فهل يوجد تطبيق إضافي ؟؟

2.x لا يمكنه فعل ipynb إلى ipynb

أعتقد أن المشكلة الرئيسية هنا هي الوقت الذي يستغرقه عرض كميات كبيرة من المدخلات في المتصفح (على الرغم من أن الأمر سيستغرق بعض الوقت فقط لنقل 4.6 ميغابايت من kernel إلى المتصفح). تشير مشكلة أخرى هنا إلى أن تغيير CSS المقترح قد يساعد في حل هذه المشكلة.

في نقطة ذات صلة ، لا يعد إظهار عمليات التتبع التي تحتوي على أكثر من ، على سبيل المثال 20 ، استدعاءات دالة في تتبع المكدس. ضع في اعتبارك وجود كائن شجرة هرمي للتوسيع / ​​الطي يمكن أن يستخدمه تتبع المكدس. أو ربما يجب أن يكون هناك ارتباط "إظهار المزيد ..." لأي إخراج كبير للتأكد من إمكانية عرض أجهزة الكمبيوتر المحمولة. (لا يبدو أن النواتج الكبيرة تمثل مشكلة في برنامج nbviewer الثابت. لقد قمت بطريق الخطأ بطباعة دفتر ملاحظات للطالب مكون من 500 صفحة تم عرضه على nbviewer مع تتبع النظام في اليوم الآخر ...)

يمكن أن تحدث مشكلة المخرجات الكبيرة التي تجعل جهاز كمبيوتر محمول غير قابل للتحميل في أي نواة Jupyter ، لذلك لا يقتصر على IPython فقط.

أقوم بتشغيل النواة محليًا ، لذا آمل ألا يستغرق نقل بيانات 4.6 ميجا بايت كل هذا الوقت.
حدسي هو أن هناك بعض التكلفة الثابتة الكبيرة لتفسير / تقديم أحد تلك الخطوط الغريبة. على سبيل المثال ، ما هو الوقت المناسب لتقديم معيار واحد مع خطوط K مقابل مخرجات K القياسية مع سطر واحد لكل منهما.

لقد تحدثنا من قبل عن وضع بعض الحراس الآمنين لمنع وصول كميات كبيرة من المخرجات حتى إلى الكمبيوتر الدفتري (أو واجهات أخرى). الطريقة التي نتعامل بها مع المخرجات الكبيرة في الوقت الحالي هي مشكلة كبيرة. بعض النقاط:

  • يجب أن تدير النواة نفسها هذا - يجب أن ترفض حتى إرسال مخرجات تتجاوز نقطة معينة.
  • يجب أن تقوم النواة بحفظ مخرجات كبيرة في مكان ما (ربما على القرص ، ولكن قد يكون ذلك مشكلة تتجاوز نقطة معينة).
  • يجب أن ترسل النواة شيئًا يشير إلى أنه تم إنشاء مخرجات كبيرة وتزويد المستخدم بطريقة ما لعرضه ، أو على الأقل إخبار المستخدم بكمية الإخراج التي تم إنشاؤها ومكان وضعها.
  • كل هذا يجب أن يتكامل مع التمرير / الانهيار الناتج بطريقة ذكية.

لقد غيرت عنوان هذه المشكلة ليعكس هذه المشكلة الأكثر عمومية.

حسنًا ، ولكن يبدو أن الواجهة الأمامية تعرف بشكل أفضل ما هو "أكثر من اللازم". إذا قررت النواة ، فستكون هي نفسها لجميع الواجهات الأمامية. ما هو أكثر من اللازم بالنسبة لوحدة التحكم يختلف عن الكمبيوتر المحمول.

أنا يتفقون في الغالب معك. ربما يكون من المنطقي أن يكون لديك نهج متدرج
حيث تم التعامل مع هذا في البداية من خلال الواجهة الأمامية. ولكن بالنسبة للبيانات الضخمة حقًا ،
أنت تعلم أنه لا توجد واجهة أمامية يمكنها التعامل معها. لكن أكثر
الشيء المهم هو أنه بعد نقطة معينة ، لا يمكن لأي إنسان أن يكون منطقيًا
ننظر في الإخراج. لا يتعلق الأمر بالأداء فقط ، إنه يتعلق بالمستخدم
تجربة. أعتقد أننا يمكن أن نكون عدوانيين إلى حد ما في إخبار المستخدم "أنت
لقد حاولت للتو إنشاء مخرجات أكثر مما يمكن أن تبدو عليه "
بغض النظر عن مشكلة الأداء.

في يوم الاثنين ، 12 كانون الثاني (يناير) 2015 ، الساعة 10:38 صباحًا ، إرسال رسالة دوغ فارغة من الإشعارات @
كتب:

حسنًا ، ولكن يبدو أن الواجهة الأمامية تعرف بشكل أفضل ما هو "أكثر من اللازم". إذا كان
تقرر kernel ، فسيكون هو نفسه لجميع الواجهات الأمامية. ما هو ايضا
الكثير بالنسبة لوحدة التحكم يختلف عن جهاز الكمبيوتر المحمول.

-
قم بالرد على هذا البريد الإلكتروني مباشرة أو قم بعرضه على GitHub
https://github.com/ipython/ipython/issues/6771#issuecomment -69620565.

بريان إي جرانجر
جامعة ولاية كال بولي ، سان لويس أوبيسبو
ellisonbg على Twitter و GitHub
[email protected] و [email protected]

مستوحاة من تعليق من Carreau ، قمت بعمل ملحقات دفتر الملاحظات هذا:
https://github.com/ipython-contrib/IPython-notebook-extensions/wiki/limit-output

يعمل جيدًا بالنسبة لي لمنع المتصفح من الانهيار في حلقات الطباعة التي لا نهاية لها.

تم الاتفاق مع juhasch على حدوث معظم تعطل المتصفح بسبب عنصر DOM.
ويعتمد "الحد" بشكل كبير على نوع المخرجات. يختلف عرض نفس كمية البيانات مثل PNG أو النص تمامًا من حيث ما يمكن للمتصفح التعامل معه.

juhasch أعتقد أنني قد امتدادك افتراضيًا لـ IPython 3 ، وإلا فإن الفائض المكدس يجعل الكمبيوتر المحمول غير قابل للتحميل.

راجع للشغل ، ما الذي يسمح لك بالذهاب إلى / nbextensions / والنقر فوق تنشيط للحصول على ملحق ... أريد ذلك أيضًا!

ملحق الخادم لـ / nbextensions / موجود في طلب السحب هذا:
https://github.com/ipython-contrib/IPython-notebook-extensions/pull/164

إغلاق هذه المشكلة ليس في IPython نفسه وإذا كان لا يزال يمثل مشكلة وذات صلة ، فيجب فتحه في المستودع الصحيح. سيسمح هذا بالحفاظ على عدد المشكلات المفتوحة في IPython repo تحت السيطرة.

لا تتردد في الاستمرار في التعليق أو إعادة الفتح إذا لزم الأمر.

شكر.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات