Запитання з тегом «cpython»

Довідкова реалізація мови програмування Python. Використовуйте цей тег для питань, що стосуються даної реалізації, загальні запитання Python мають бути просто позначені як "python".

3
Чому код Python працює у функції швидше?
def main(): for i in xrange(10**8): pass main() Цей фрагмент коду в Python працює (Примітка. Позначення часу виконується за допомогою функції часу в BASH в Linux.) real 0m1.841s user 0m1.828s sys 0m0.012s Однак якщо цикл for не розміщений у функції, for i in xrange(10**8): pass тоді він працює набагато довше: …

12
Чому я не повинен використовувати PyPy над CPython, якщо PyPy в 6,3 рази швидший?
Я багато чув про проект PyPy . Вони стверджують, що це в 6,3 рази швидше, ніж інтерпретатор CPython на їхньому сайті . Щоразу, коли ми говоримо про динамічні мови, як-от Python, швидкість - це одна з головних проблем. Щоб вирішити це, вони кажуть, що PyPy у 6,3 рази швидший. Друге …

9
Пітон проти Cpython
У чому вся ця суєта щодо Python та CPython (Jython, IronPython) , я не розумію: python.org згадує, що CPython є: "Традиційна" реалізація Python (прозвана CPython) ще одне питання переповнення стека згадує: CPython - інтерпретатор байт-коду за замовчуванням Python, який написаний на C. Чесно кажучи, я не розумію, що обидва ці …
447 python  cpython 

2
Чому деякі порівняння з плаваючими <цілими числами в чотири рази повільніше, ніж інші?
Порівнюючи поплавці з цілими числами, для деяких пар значень потрібно набагато більше часу, ніж інші значення аналогічної величини. Наприклад: &gt;&gt;&gt; import timeit &gt;&gt;&gt; timeit.timeit("562949953420000.7 &lt; 562949953421000") # run 1 million times 0.5387085462592742 Але якщо флоат або ціле число на певну суму зменшиться або збільшиться, порівняння запускається набагато швидше: &gt;&gt;&gt; timeit.timeit("562949953420000.7 …

5
Як встановлюється () реалізується?
Я бачив, як люди кажуть, що setоб’єкти в python мають перевірку членства O (1). Як вони реалізуються всередині, щоб дозволити це? Яку структуру даних він використовує? Які ще наслідки має ця реалізація? Кожна відповідь тут була справді освічуючою, але я можу прийняти лише одну, тому я піду з найближчою відповіддю …


3
Чому ітерація над невеликим рядком повільніше, ніж за малим списком?
Я розігрувався з timeit і зауважив, що робити просте розуміння списку невеликою струною потрібно довше, ніж виконувати ту саму операцію зі списком невеликих одиночних рядків символів. Будь-яке пояснення? Це майже в 1,35 рази більше часу. &gt;&gt;&gt; from timeit import timeit &gt;&gt;&gt; timeit("[x for x in 'abc']") 2.0691067844831528 &gt;&gt;&gt; timeit("[x for …

1
Чому кортеж (set ([1, "a", "b", "c", "z", "f"])) == кортеж (set (["a", "b", "c", "Z", "f", 1])) 85% часу з увімкненою хеш-рандомізацією?
Враховуючи відповідь Нуля Пірея на інше питання , ми маємо це x = tuple(set([1, "a", "b", "c", "z", "f"])) y = tuple(set(["a", "b", "c", "z", "f", 1])) print(x == y) Друкує Trueблизько 85% часу з увімкненою рандомізацією хешу . Чому 85%?

10
IronPython проти Python .NET
Я хочу отримати доступ до деяких збірок .NET, написаних на C #, з коду Python. Невелике дослідження показало, що у мене є два варіанти: IronPython із вбудованою функцією / підтримкою інтерфейсу .NET Python із пакетом .NET Python Які компроміси між обома рішеннями?

2
list () використовує трохи більше пам'яті, ніж розуміння списку
Тож я грав з listпредметами і виявив трохи дивної речі, яка, якщо listстворена з list()нею, використовує більше пам'яті, ніж розуміння списку? Я використовую Python 3.5.2 In [1]: import sys In [2]: a = list(range(100)) In [3]: sys.getsizeof(a) Out[3]: 1008 In [4]: b = [i for i in range(100)] In [5]: …

2
Чому код використовує проміжні змінні швидше, ніж код без?
Я зіткнувся з цією дивною поведінкою і не зміг пояснити. Ось еталони: py -3 -m timeit "tuple(range(2000)) == tuple(range(2000))" 10000 loops, best of 3: 97.7 usec per loop py -3 -m timeit "a = tuple(range(2000)); b = tuple(range(2000)); a==b" 10000 loops, best of 3: 70.7 usec per loop Як так, …


4
Нарізання кортежу не повертає новий об'єкт на відміну від нарізки списку
У Python (2 і 3). Щоразу, коли ми використовуємо розріз списку, він повертає новий об'єкт, наприклад: l1 = [1,2,3,4] print(id(l1)) l2 = l1[:] print(id(l2)) Вихідні дані &gt;&gt;&gt; 140344378384464 &gt;&gt;&gt; 140344378387272 Якщо те саме повторюється з кортежем, повертається той самий об'єкт, наприклад: t1 = (1,2,3,4) t2 = t1[:] print(id(t1)) print(id(t2)) Вихідні …
12 python  list  tuples  slice  cpython 

2
Чому встановлення дескриптора на клас замінює дескриптор?
Просте запитання: class VocalDescriptor(object): def __get__(self, obj, objtype): print('__get__, obj={}, objtype={}'.format(obj, objtype)) def __set__(self, obj, val): print('__set__') class B(object): v = VocalDescriptor() B.v # prints "__get__, obj=None, objtype=&lt;class '__main__.B'&gt;" B.v = 3 # does not print "__set__", evidently does not trigger descriptor B.v # does not print anything, we overwrote …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.