Ipython: لا يمكن مقاطعة الحلقات اللانهائية في دفتر الملاحظات

تم إنشاؤها على ١٣ يناير ٢٠١٣  ·  29تعليقات  ·  مصدر: ipython/ipython

لقد قدمت مؤخرًا مقدمة عن برمجة بايثون في ورشة عمل حول علم الجينوم. بالنسبة إلى البرنامج التعليمي ، استخدمنا واجهة الكمبيوتر المحمول وتم استقبالها جيدًا (شكرًا لك!). أثناء المناقشة في الحلقات ، طلبت من الطلاب تحويل مثال for loop إلى حلقة while. في هذه العملية ، أنشأ العديد من الطلاب حلقات لا نهائية. بالنسبة لبعض هؤلاء الطلاب ، تحطمت Firefox. كان الإصلاح هو قتل خادم الكمبيوتر المحمول وقتل المتصفح. كان جميع الطلاب يستخدمون الأجهزة الافتراضية المستندة إلى Ubuntu و Firefox كمتصفح. إذا كان ذلك مفيدًا ، فيمكنني الحصول على مزيد من التفاصيل حول الأنظمة بالإضافة إلى التحقق مما إذا كان بإمكاني إعادة إنشاء هذا السلوك على نسختي من الجهاز الظاهري.

needs-info

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

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

while True:
    print "foo"

هذا يجعل Firefox يستخدم وحدة المعالجة المركزية بنسبة 100٪ ولا يستجيب بأي طريقة أو شكل. يعد قتل Firefox وعملية IPython الطريقة الوحيدة لاستعادة النظام.

Ipython 3.0.0
فايرفوكس 42.0
Linux 3.13.0-24 عام

ال 29 كومينتر

بأي حال من الأحوال ، هل ينتج عن الشخص المتعطل إخراجًا وليس الذي لم يعطل المتصفح؟
(يجب أن يكون لديك Kernel Kernel في قائمة واحدة)

من المحتمل أن يكون لدينا مهلة تمكين أمان تقضي على بقاء الخادم si kernel مشغولاً لفترة طويلة ، أو تلقي الواجهة الأمامية الكثير من المدخلات

أعتقد أن هناك مشكلتين هنا:

  • قطع حلقة لانهائية ممكن تماما. في قائمة Kernel ، انقر فوق المقاطعة.
  • إذا قامت الحلقة الخاصة بك بطباعة شيء ما في كل خطوة ، فسوف تنتج قدرًا هائلاً من المخرجات ، مما قد يتسبب في مشاكل للمتصفح. أنظر أيضا العدد رقم 1975.

Carreau لم يكن هناك إخراج

takluyver قائمة النواة لا تستجيب. سيحدث هذا مع الحلقات التي كانت تطبع والحلقات التي لم تكن تطبع.

هل يمكنك إعطاء مثال على حلقة لا تعمل فيها؟

في 13 كانون الثاني (يناير) 2013 ، الساعة 16:11 ، كتب Daniel McDonald [email protected] :

Carreau https://github.com/Carreau لم يكن هناك إخراج

takluyver https://github.com/takluyver قائمة النواة لم تكن كذلك
متجاوب. سيحدث هذا مع الحلقات التي كانت تطبع وحلقات ذلك
لم تكن تطبع.

-
يمكنك الرد على هذه الرسالة الإلكترونية مباشرةً أو عرضها على Gi tHubhttps: //github.com/ipython/ipython/issues/2781#issuecomment -12195606.

خوارزمية الجناس الناقص الساذجة / الرهيبة عندما لا تكون الكلمات عبارة عن جناس ناقص لبعضها البعض

from random import shuffle 
word1 = list("quietx")
word2 = list("quite")
while word1 != word2:
    shuffle(word1)

لقد اختبرت للتو ، ويمكنني مقاطعة ذلك الشخص بدون مشاكل على Firefox و Ubuntu. هل يمكنك نسخها بشكل موثوق على نظامك؟

لا يمكنني تكرارها على نظامي. سأتعقب المستخدمين الذين واجهوا المشكلة وأعد تشغيل أنظمتهم. تُستأنف جلسات ورشة العمل صباح الغد - ورشة العمل في أوروبا واليوم يوم إجازة - لذا سأستمر قليلاً قبل أن أتمكن من العودة إلى هذا.

لم أعد في وضع يسمح لي باختبار ذلك ولم أتمكن من المتابعة في
ورشة عمل. نظرًا لأنني لا أستطيع إعادة إظهار المشكلة ، ولا يمكن لأي شخص آخر ،
دعنا نحولها إلى حظ.

شكرا مرة أخرى على الاستجابة السريعة وأنا أعتذر عن تناول الوقت على هذا

في الأحد 13 يناير 2013 الساعة 9:57 صباحًا ، كتب توماس كلويفر إخطارات github.com:

لقد اختبرت للتو ، ويمكنني مقاطعة ذلك الشخص بدون مشاكل على Firefox
& أوبونتو. هل يمكنك نسخها بشكل موثوق على نظامك؟

-
يمكنك الرد على هذه الرسالة الإلكترونية مباشرةً أو عرضها على Gi tHubhttps: //github.com/ipython/ipython/issues/2781#issuecomment -12196271.

لا قلق. لا تتردد في إعادة الفتح إذا وجدت طريقة لإعادة إنتاج الخطأ.

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

هذا هو الرمز الذي استخدمته لتعطله:

استيراد numpy كـ np
س = np.array ([0،1،2،3،4])
it = np.nditer (x، flags = ['f_index'])
بينما لم يتم ذلك.
اطبعها. index

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

يبدو أن هذه المشكلة لا تزال قائمة!

يمكنني تشغيل "المقاطعة" أو "إعادة التشغيل" من قائمة kernel لكنها لم تدخل حيز التنفيذ على الإطلاق. لا تزال أيقونة الجري تُعرض على شكل كرة سوداء.

حتى إذا قمت بإعادة تشغيل الكمبيوتر ، بعد النقر فوق الكمبيوتر الدفتري مرة أخرى ، فسيتم تكرار العملية هناك إلى الأبد!

أنا أستخدم MacBook مع تثبيت ipython 2.2.0.

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

سؤالي هو ، هل هناك طريقة للوصول إلى النواة الأساسية من سطر الأوامر؟ أقوم بتشغيل دفتر ipython من محطة طرفية ، وفي الوقت الحالي ، يتمثل الحل في مقاطعة لوحة المفاتيح لتلك المحطة ، والتي تغلق النواة تمامًا.

لدي أيضا هذه القضية الحرجة . يبدو أنه مرتبط بالحلقات بالفعل. هذا يمنعني من إجراء عمليات محاكاة طويلة أو تحليل البيانات ، مما يعني: أنا مشدود ...

لا أعرف ما إذا كان الأمر مرتبطًا ولكنني لاحظت أنه بمجرد توقفه ، يبدو أن الترابط المفرط ينهار في وحدة معالجة مركزية واحدة لا تزال تعمل. يمكنك أن ترى ذلك باستخدام htop ، على سبيل المثال. في البداية ، بدا لي أن الخيوط المفرطة (التي تستغلها مكتبات -> مكتبات BLAS على جهازي) هي التي تحطمت ومن ثم سيصبح الأمر برمته بطيئًا ، ولكن بعد ذلك حاولت المقاطعة ولم يحالفني الحظ وهكذا أدركت أن نواة IPython أصبحت عالقة للتو.

لم تحدث لي هذه المشكلة أبدًا عندما:

  • كنت أستخدم جهازًا قديمًا (ولكن ما زلت متشابهًا جدًا ، فقط عدد أقل من ذاكرة الوصول العشوائي ووحدات المعالجة المركزية)
  • كنت أستخدم ipython القديم <3.0
  • لم أكن أعمل على جهاز كمبيوتر محمول IPython بعيد

تخميناتي المتعلمة هي:

  • مشكلة مع بعض المقبس في مكان ما ...
  • تتسبب الخلفيات الخلفية لربط matplotlib في إفساد <- ولكن هذا لمجرد أنها تفعل ذلك دائمًا بشكل أفضل من الأفضل وضع الرهان ؛)

عند حدوث المشكلة ، أقوم فقط بإعادة تشغيل kernel من داخل واجهة الويب وإعادة تنفيذ ما كنت أفعله ...

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

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

لدي أيضًا هذه المشكلة على OSX + chrome.

minrk ، أعتقد أن هذا قد يستحق إعادة فتحه. ليس لدي عدد كافٍ من المميزات لإعادة الفتح دون إنشاء عدد جديد.

من واجهة سطر الأوامر (CLI) ، يبدو أن الضغط على زر الإيقاف يؤدي إلى القيام بشيء ما ، ولكن يظل الكمبيوتر الدفتري غير مستجيب تمامًا.

[I 15:26:22.224 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee
[I 15:26:32.197 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee
[I 15:26:42.688 NotebookApp] Saving file at /Untitled.ipynb
[I 15:27:30.993 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee
[I 15:27:35.605 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee
[I 15:28:43.999 NotebookApp] Saving file at /Untitled.ipynb
[I 15:29:28.038 NotebookApp] Kernel interrupted: edee0497-b340-43fd-be77-1ad67e5170ee

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

أنا أيضا أرى هذه المشكلة.

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

while True:
    print "foo"

هذا يجعل Firefox يستخدم وحدة المعالجة المركزية بنسبة 100٪ ولا يستجيب بأي طريقة أو شكل. يعد قتل Firefox وعملية IPython الطريقة الوحيدة لاستعادة النظام.

Ipython 3.0.0
فايرفوكس 42.0
Linux 3.13.0-24 عام

يمكنني التكاثر مع
ايبثون 3.2.0
بيثون 2.7.10
إصدار Chrome 46.0.2490.86 (64 بت)
OSX 10.10.5

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

انطباعي الأولي هو أنها مشكلة في محرك عرض النص في الكروم ، لكنني أعرف القليل عن كيفية عمل ذلك.

مثال آخر على البطء هو عندما يأتي matplotlib كبير نسبيًا إلى المقدمة بعد التمرير إليه. يصبح الكمبيوتر المحمول بأكمله متوترًا للغاية لمدة 4-5 ثوانٍ.

مقابل ما يستحق ، أنا أستخدم آلة سمين إلى حد ما ، لذلك من الغريب بشكل خاص أن يقوم Jupyter بإحضار ماكينتي بالكامل إلى ركبتيها.

9/10 ، يحدث ذلك عن طريق الصدفة ، لذلك ليس من السهل وصفه بأنه خطأ في المستخدم.

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

ليس حلاً للمشكلة ، ولكنه طريقة محتملة للتخفيف من عواقبها.

لقد واجهت نفس المشكلة اليوم وفي الماضي ، تشغيل Linux Mint (18.0) و Firefox. لقد كان مولدًا للعد () بسيطًا جدًا ، لكنني كنت العبث بـ __getitem__ ، وبطريقة سخيفة ، قمت بتعيين طباعة على المفتاح.

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

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

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

شكرا.

Carreau ، هل لديك مستودع مقترح (أو لم يتم نقل هذا إلى حيث يتم تعقب مشكلات دفتر الملاحظات ...)؟

سيحتاج ذلك إلى ترحيله إما إلى jupyter / دفتر ملاحظات أو jupyterlab / jupyterlab. على الأرجح ثانيًا إذا كان يؤثر على jupyterlab أيضًا.

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