سؤال

أنا في عداد المفقودين شيء أساسي جدا.

class C:
    def __init__(self):
        self.N = 100
        pass

    def f(self, param):
        print 'C.f -- param'
        for k in xrange(param):
            for i in xrange(self.N):
                for j in xrange(self.N):
                    a = float(i)/(1+float(j)) + float(i/self.N) ** float(j/self.N)

import cProfile

c = C()
cProfile.run('c.f(3)')

عند تشغيل التعليمات البرمجية أعلاه في IPython, أحصل على:

NameError: name 'c' is not defined

ما أنا في عداد المفقودين ؟

التحديث بالضبط لصق من الدورة هو هنا: http://pastebin.com/f3e1b9946

التحديث أنا لم أذكر أن المشكلة تحدث في IPython التي (على اتضح) هو مصدر المشكلة

هل كانت مفيدة؟

المحلول

في حين داخل IPython ، يمكنك استخدام %prun السحر وظيفة:

In [9]: %prun c.f(3)
C.f -- param
         3 function calls in 0.066 CPU seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.066    0.066    0.066    0.066 <string>:6(f)
        1    0.000    0.000    0.066    0.066 <string>:1(<module>)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

نصائح أخرى

لا الملصق الأصلي مشكلة, ولكن يمكنك أيضا الحصول على نفس هذا الخطأ إذا كنت تحتج cProfile.تشغيل() في شيء آخر غير ____ الرئيسية مساحة (من خلال وظيفة أو الاستيراد).في هذه الحالة تحتاج إلى استخدام التالية بدلا من تشغيل() الطريقة:

cProfile.runctx("your code", globals(), locals())

مجد هذا المنصب على مساعدتي في هذا الرقم.

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

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