Spyder: Spyder 4.0.0 بطيء بشكل لا يطاق عند إضافة أو إزالة الخطوط

تم إنشاؤها على ٩ ديسمبر ٢٠١٩  ·  30تعليقات  ·  مصدر: spyder-ide/spyder

وصف المشكلة

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

نفس المشكلة بعد spyder - reset. حاول أيضًا تبديل الإكمال التلقائي. لقد حدث هذا منذ الإصدار التجريبي / المرشح ولم أكن أستخدمه لهذا السبب. سبايدر غير قابل للاستخدام الآن مثل هذا بالنسبة لي.

ما هي الخطوات التي تعيد إنتاج المشكلة؟

  1. اضغط على Enter أو Ctrl + D

ما هو الناتج المتوقع؟ ماذا ترى بدلا من ذلك؟

أتوقع ألا يستغرق الأمر وقتًا طويلاً مثل الإصدارات القديمة.

إصدارات

  • إصدار سبايدر: 4.0.0
  • إصدار Python: 3.7.5
  • إصدار Qt: 5.9.6
  • إصدار PyQt: 5.9.2
  • اسم / إصدار نظام التشغيل: Win 10

التبعيات

cloudpickle> = 0.5.0: 1.2.2 (موافق)
pygments> = 2.0: 2.5.2 (موافق)
qtconsole> = 4.6.0: 4.6.0 (موافق)
nbconvert> = 4.0: 5.6.1 (موافق)
أبو الهول> = 0.6.6: 2.2.2 (موافق)
pylint> = 0.25: 2.4.4 (موافق)
psutil> = 0.3: 5.6.7 (موافق)
qtawesome> = 0.5.7: 0.6.0 (موافق)
qtpy> = 1.5.0: 1.9.0 (موافق)
Pickleshare> = 0.4: 0.7.5 (موافق)
zmq> = 17: 18.1.0 (موافق)
chardet> = 2.0.0: 3.0.4 (موافق)
numpydoc> = 0.6.0: 0.9.1 (موافق)
spyder_kernels> = 1.8.1 ؛ <2.0.0: 1.8.1 (موافق)
qdarkstyle> = 2.7: 2.7 (موافق)
atomicwrites> = 1.2.0: 1.3.0 (موافق)
diff_match_patch> = 20181111: 20181111 (موافق)
interaltree: لا شيء (موافق)
الحراسة: لا شيء (موافق)
كيرينغ: لا شيء (موافق)
pexpect> = 4.4.0: 4.7.0 (موافق)
pympler: لا شيء (موافق)
sympy> = 0.7.3: 1.4 (موافق)
cython> = 0.21: 0.29.14 (موافق)
IPython> = 4.0: 7.10.1 (موافق)
matplotlib> = 2.0.0: 3.1.1 (موافق)
الباندا> = 0.13.1: 0.25.3 (موافق)
numpy> = 1.7: 1.17.4 (موافق)
scipy> = 0.17.0: 1.3.1 (موافق)
pyls> = 0.31.2 ؛ <0.32.0: 0.31.2 (موافق)
rtree> = 0.8.3: 0.8.3 (موافق)

Editor Bug

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

bcolsen بالإضافة إلى تحديث الملف الحالي فقط ، يجب ألا يتم تحديثه أيضًا إذا لم يكن مستكشف المخطط التفصيلي مرئيًا (كما يؤكد الاختبار الذي أجريته الآن).

ال 30 كومينتر

gabrielclow ، وصفك لا يكفي. الرجاء نشر:

  1. ما نوع الملفات التي تقوم بتحريرها (بايثون أو غيرها)؟
  2. كم عدد الأسطر التي قمت بتقديمها؟
  3. هل تم تمكين أشياء مثل "أدلة المسافة البادئة"؟

أخيرًا ، يرجى نشر مشكلة فيديو (صورة متحركة مع Licecap) لمعرفة ما تشير إليه بالضبط.

gabrielclow ، وصفك لا يكفي. الرجاء نشر:

  1. ما نوع الملفات التي تقوم بتحريرها (بايثون أو غيرها)؟
  2. كم عدد الأسطر التي قمت بتقديمها؟
  3. هل تم تمكين أشياء مثل "أدلة المسافة البادئة"؟

أخيرًا ، يرجى نشر مشكلة فيديو (صورة متحركة مع Licecap) لمعرفة ما تشير إليه بالضبط.

  1. أنا أقوم بتحرير ملفات .py فقط
  2. لا يبدو أنه يعتمد على عدد الأسطر. يحدث في ملفات صغيرة مع 50 سطرًا للملفات الكبيرة ذات 5 كيلو سطر.
  3. أنا أستخدم الإكمال التلقائي فقط (التكوين في لقطة الشاشة). تم إيقاف تشغيل الباقي (بدون فحص ، لا فحص لنمط الكود ، بدون فحص docstring ، بدون أدلة مسافة بادئة). ليس لدي إعداد لغات أخرى وحاولت أيضًا تشغيل وإيقاف تشغيل طائرة ورقية.

autocomplete

في gif ، أضغط على Enter ، وانتظر حتى يتم إنشاء الأسطر الجديدة ، ثم اضغط مع الاستمرار على Ctrl + Z لإزالتها (نفس تأثير Ctrl + D ، لذلك أعتقد أنه ليس له أيضًا أي علاقة بـ الاختصار). ثم يتوقف Spyder ويضيف أو يحذف الخطوط ببطء شديد بدلاً من القيام بذلك بسلاسة:

stopwatch

تحديث : على ما يبدو ، إذا أغلقت بعض الملفات ، فإن التباطؤ يكون أقل وضوحًا!
التحديث 2 : أيضًا ، يبدو أن مقدار التباطؤ مرتبط بعدد الملفات المفتوحة + عدد الأسطر في كل ملف ، ولكنه يحدث بغض النظر عن الملف المحدد حاليًا. إذا احتفظت ببعض الملفات الصغيرة فقط وأغلقت الباقي ، فسيكون الأمر أكثر سلاسة
التحديث 3 : إذا ضغطت لفترة طويلة جدًا أو ضغطت بسرعة كبيرة ، فيمكن لـ Spyder تعليقها لفترة من الوقت

أيضًا ، يبدو أن مقدار التباطؤ مرتبط بعدد الملفات المفتوحة

كم عدد الملفات التي فتحتها عندما رأيت أسوأ تباطؤ؟

أيضًا ، يبدو أن مقدار التباطؤ مرتبط بعدد الملفات المفتوحة

كم عدد الملفات التي فتحتها عندما رأيت أسوأ تباطؤ؟

أعمل غالبًا مع 6-8 ملفات مفتوحة. عادة ما يكون اثنان منهم أكبر (من 4 إلى 5 آلاف خط) والباقي عبارة عن ملفات أصغر تحتوي على 100-500 سطر.

@ CAM-Gerlach ، هل رأيت شيئًا كهذا من قبل؟

إذا كان بإمكاني التعليق على هذا ، فأنا أواجه نفس المشكلة أيضًا ، مما جعلني بالفعل ألغي تثبيت Spyder 4 والعودة إلى Spyder 3.3.6.
لدي فقط الإعدادات التي تم تمكينها في Spyder 3 أيضًا ، لذا يتحقق PEP8 ؛ تم تمكين إكمال الكود والتفاصيل ؛ لكن لا يوجد فحص docstring ؛ مقتطفات الشفرة؛ أوصاف تحوم طائرة ورقية؛ إلخ
يظهر التباطؤ كما هو موضح في ملف GIF الخاص بـ

عندما أقوم ببناء حزم كبيرة ، ليس من غير المألوف بالنسبة لي فتح 30-50 ملفًا من ملفات Python في وقت واحد ، يمكن أن يحتوي بعضها بسهولة على أكثر من 3 آلاف سطر من التعليمات البرمجية (لقد فتحت هذه الحزم عندما كنت ألاحظ التباطؤ الهائل).
نظرًا لأنني أستخدم 3 شاشات في وقت واحد لتحرير البرامج النصية الخاصة بي في معظم الأوقات ، والتي يمكن أن تحتوي على 8 لوحات بحد أقصى ، وأحتاج إلى التبديل بين الملفات بشكل متكرر ، فإن إغلاق معظم هذه الملفات لن يعمل معي.

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

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

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

bcolsen ، كيف يمكننا إعادة إنتاجه؟

افتح حوالي 40 ملفًا ويبدو أنه بطيء جدًا. يبدو أنه قد يكون هناك شيء ما في docdidchange يتحقق من جميع الملفات وليس فقط الملف النشط. ربما الخط الخارجي.

@ ccordoba12 بقدر ما أستطيع أن أقول ، فإن هذا السلوك هو في الأساس نفس السلوك # 8864 ، وبالتأكيد يمكنني إعادة صياغته بإعدادات نظيفة في Spyder 4 final مع فتح mainwindow.py طالما تم تمكين أدلة المسافة البادئة ( وجود الأجزاء المنقسمة يجعل التأخر مزدوجًا أو أكثر). يحتوي حذف الأسطر على نفس التأخير الكبير (تمامًا كما هو موضح هنا ؛ مع زمن انتقال ~ 1 ثانية وتأخير تكرار ~ 1 ثانية على جهاز قوي بشكل معتدل ، ويتناسب مع طول الملف وعدد الأجزاء المنقسمة المفتوحة) مثل الأشياء الأخرى التي اختبرتها هناك (خطوط متحركة ، خطوط مكررة ، إلخ) ، ويمكنني أن أؤكد أن ذلك ما زال يحدث في Spyder 4 النهائي مع ملف temp فقط و mainwindow.py مفتوح مع إعدادات نظيفة.

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

هل هناك ، بأي حال من الأحوال ، برنامج نصي يتم تشغيله على جميع الأسطر في جميع الملفات المفتوحة كلما تم تعديل الملف؟

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

@ ccordoba12 بقدر ما أستطيع أن أقول ، فإن هذا السلوك هو في الأساس نفس السلوك # 8864 ، وبالتأكيد يمكنني إعادة صياغته بإعدادات نظيفة في Spyder 4 final مع فتح mainwindow.py طالما تم تمكين أدلة المسافة البادئة ( وجود الأجزاء المنقسمة يجعل التأخر مزدوجًا أو أكثر).

إذا قمت أيضًا بتمكين أدلة المسافة البادئة جنبًا إلى جنب مع فتح ملفاتي البالغ عددها 50 و 8 أجزاء مقسمة (وهي الطريقة التي أحرر بها ملفاتي عادةً) ، يزداد التأخير إلى ما بين 6 إلى 10 ثوانٍ لكل سطر جديد.
الكمبيوتر الذي أستخدمه هو كمبيوتر مكتبي متطور للألعاب ، لذا فهو ليس حقًا بسبب قوة الجهاز.

حاولت أنا و dalthviz إعادة إنتاج # 8864 ولكن دون جدوى. يؤسفني القول ، ولكن حتى نتمكن من إعادة إنتاجه ، لا يوجد شيء يمكننا فعله حيال ذلك.

افتح حوالي 40 ملفًا ويبدو أنه بطيء جدًا. يبدو أنه قد يكون هناك شيء ما في docdidchange يتحقق من جميع الملفات وليس فقط الملف النشط. ربما الخط الخارجي.

حسنًا ، هذه بداية جيدة. سوف نتحقق من هذا.

@ ccordoba12 لقد اكتشفت مصدر هذا التأخير ، والذي يبدو في الواقع أنه التأخر "الأساسي" الرئيسي الذي شعرت به في Spyder 4 مقابل Spyder 3 الذي تحدثت عنه لفترة من الوقت: كما اقترح bcolsen ، هو بالفعل جزء المخطط التفصيلي ، على الرغم من أنه يحدث بالفعل بغض النظر عما إذا كان الجزء المذكور مفتوحًا أم مغلقًا. على جهاز منخفض النهاية ، يكون مرئيًا بالفعل (على الرغم من أنه ليس قريبًا من السوء) مع فتح temp.py و mainwindow.py ، ولم يتم تمكين أي شيء آخر ولا يوجد جزء مخطط تفصيلي مفتوح. فيما يلي كيفية إعادة النسخ من الإعدادات النظيفة:

  1. افتح mainwindow.py ولوحة محرر مقسمة ، واضبط اللوحة اليمنى لإظهار temp.py واليسار لإظهار mainwindow.
  2. اضغط باستمرار على حذف / تكرار / نقل الخط في اللوحة اليسرى (النافذة الرئيسية) ، والتراجع / الإعادة ، وما إلى ذلك لنفسه. من الواضح أن هناك تأخرًا بسيطًا ولكن ملحوظًا.
  3. افتح جزء المخطط التفصيلي (الذي كان مخفيًا بشكل افتراضي). يؤدي هذا (بسبب خطأ ظاهري بسيط ولكنه مفيد) إلى إلغاء مزامنة الملف الموضح في جزء المخطط التفصيلي من الملف الذي تم التركيز عليه ، نظرًا لأنه يقوم بالتبديل لإظهار الملف نشطًا في اللوحة المنقسمة في أقصى اليمين بدلاً من لوحة الانقسام النشطة عند فتحه / غير مخفي.
  4. أعد محاولة حذف / etc / lines في mainwindow. يوجد تأخر ضئيل للغاية ومعدل التكرار أعلى (من المحتمل أن يكون أكثر وضوحًا مع الأجهزة ذات الأداء المنخفض)
  5. انقر على اللوحة اليمنى (temp.py) ، ثم عد إلى اللوحة اليسرى (mainwindow) لجعل مستكشف المخطط التفصيلي يظهر بشكل صحيح مخطط اللوحة اليسرى.
  6. أعد محاولة حذف / وما إلى ذلك ، وعادت فترة التأخير ، كما في الخطوة 2 (عندما لم يكن مستكشف المخطط التفصيلي مرئيًا على الإطلاق)

لاختباره مع العديد من الملفات ، قمت بالبحث في import os في الدليل spyder ، وفتحت أول 40-50 ملفًا في عرض لوحة مقسمة (يجب أن ينتج عن عدد أقل من الملفات الكبيرة التأثير المكافئ) وكرر الخطوات 2-6 أعلاه. حتى في ملف قصير ، كان هناك قدر أكبر بكثير من التأخير (على غرار مستوى دليل المسافة البادئة في Mainwindow) عند حذف الأسطر في كلتا الخطوتين 2 و 6 (مستكشف المخطط التفصيلي مخفي ، ويظهر في الملف النشط) ، بينما لم يكن هناك أساسًا تأخر (كما لو لم تكن هناك ملفات مفتوحة ، أو مستوى Spyder 3) في الخطوة 4 (مستكشف الخطوط العريضة مفتوح وغير متزامن من الملف النشط).

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

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

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

آمل أن تجد الإجابة وسيتم إصلاح هذا قريبًا حتى أتمكن من استخدام الوضع المظلم الرائع في 4.0.0

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

هناك مشكلة منفصلة ولكنها مرتبطة بشكل واضح وهي أن الملفات الكبيرة (> 2000 سطر) بطيئة أيضًا في التحديث مع تغييرات الخط. إن فتح 4 أو 5 من هذه الملفات الكبيرة حاليًا يجعل الأمور أبطأ مع إجراء update_all. مع التصحيح أعلاه ، ستظل المشكلة التي يصفها @ CAM-Gerlach أعلاه على الملف الكبير ولكن الملف الصغير يجب أن يكون سريعًا دائمًا.

هناك مشكلة منفصلة ولكنها مرتبطة بشكل واضح وهي أن الملفات الكبيرة (> 2000 سطر) بطيئة أيضًا في التحديث مع تغييرات الخط. إن فتح 4 أو 5 من هذه الملفات الكبيرة حاليًا يجعل الأمور أبطأ مع إجراء update_all. مع التصحيح أعلاه ، ستظل المشكلة التي يصفها @ CAM-Gerlach أعلاه على الملف الكبير ولكن الملف الصغير يجب أن يكون سريعًا دائمًا.

يبدو أننا بحاجة إلى نقل عملية حظر واجهة المستخدم إلى سلسلة رسائل.

يبدو أننا بحاجة إلى نقل عملية حظر واجهة المستخدم إلى سلسلة رسائل.

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

أعتقد أنه مرتبط بأداة تمييز بناء الجملة في تلك المرحلة.

نعم ، هذه مشكلة لأن البنية التحتية لأداة تمييز بناء الجملة في Qt تعمل على الخيط الرئيسي: - \

bcolsen بالإضافة إلى تحديث الملف الحالي فقط ، يجب ألا يتم تحديثه أيضًا إذا لم يكن مستكشف المخطط التفصيلي مرئيًا (كما يؤكد الاختبار الذي أجريته الآن).

أواجه نفس المشكلة.
أصبح Spyder بطيئا للغاية.
آمل إذا كانت هناك أي حزم أحتاج إلى تحديثها.

NaderNazemi كما ترون من المشكلة ، أجرينا اختبارًا شاملاً

أرى أنه تم إصلاحه ، ولكن في إصداري 4.1.4 (ربما توجد إصدارات أحدث) تحدث المشكلة عند إغلاق تطبيق الإكمال التلقائي لـ Kite.

مرحبًا DGuidi ، شكرًا لإعلامنا بذلك. فقط لمعلوماتك ، تم إصدار Spyder 4.1.5 قبل بضعة أسابيع مع بعض التحسينات الإضافية الطفيفة والعديد من التغييرات الكبيرة لتحسين أداء المحرر عند التمرير والكتابة واستخدام تحليل الكود في الوقت الفعلي / أدلة المسافة البادئة / إلخ. إما تم تنفيذها للإصدار التالي أو قيد الاختبار الآن. إذا كنت تشعر بالمغامرة ، فسيكون من المفيد حقًا تجربة # 13864 ومعرفة ما إذا كان سيحسن الأمور بالنسبة لك ؛ سأختبرها قريبًا أيضًا.

أما بالنسبة لـ Kite ، فأنا لا أستخدمه وهو مكون إضافي مملوك لجهة خارجية ، ولكن يبدو أنك قد عزلت حالة معينة يكون فيها بطيئًا وهو أمر مفيد حقًا في حلها ، لذلك آمل أن يكون أحد مطوريها أو أحدهم وإلا ستتمكن من معرفة ما يحدث. حظا سعيدا!

@ CAM-Gerlach وجميع ، فقط لإضافة بعض المعلومات ، أنا أستخدم WinPython64-3.8.5.0cod من https://winpython.github.io/ لذلك ربما تعتمد المشكلة على بعض التكوين في هذه الحزمة أو ربما في windows آلة.
يصعب علي ترقية إصدار spyder ، على الأقل حتى يتم تحديث Winpython: ليس لدي القدرة على تثبيت البرنامج في جهازي.

لا يعمل تعطيل إكمال الطائرة الورقية والإكمال الاحتياطي أيضًا :(

Screenshot_362

stonebig أي فرصة قد تعرف أي شيء عن هذا؟

في الوقت الحالي ، يمكنك محاولة تعطيل أي خيارات ضمن قائمة Source ، Preferences > Editor و Preferences > Completion and Introspection التي لا تحتاجها بشكل خاص ، خاصة الأدلة البادئة التي يمكن أن تسبب تأخرًا كبيرًا. بخلاف ذلك ، لدينا عدد من الإصلاحات الجاهزة أو قيد الاختبار النهائي لـ Spyder 4.2.0 ، والتي سيتم إصدارها في الأسابيع القليلة المقبلة ، والتي تهدف إلى تحسين أداء المحرر وحل معظم أسباب التباطؤ ، خاصة على الملفات الكبيرة ، ولكن دون أن أكون قادرًا على اختبار هؤلاء للتأكد من أنهم يحسنون الأمور من أجلك ، لست متأكدًا حقًا مما أوصي به أيضًا.

مرحبًا @ CAM-Gerlach ، 95٪ من الوقت يكون Windows بطيئًا ، فهو مرتبط بنشاط مكافحة الفيروسات أو تشبع الذاكرة.

أيضًا ، قد لا تعمل المكونات الإضافية الاختيارية Spyder على تحسين الموقف

حسنا شكرا. نأمل أن يتم حل 4.2.0 أو على الأقل تحسين الوضع بشكل كبير لـ DGuidi

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