Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844

С numba что-то не так

21.01.2020, 20:09. Показов 1469. Ответов 5

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
def fact(x):
    f=1
    while x != 0 and x != 1:
        f*=x*(x-1)
        x-=2
    return f
print(fact(100))
Вывод: 9332621544394415268169923885626670049071 5968264381621468592963895217599993229915 6089414639761565182862536979208272237582 51185210916864000000000000000000000000

Вывод при использовании numba: 0 (Код ниже)

Python
1
2
3
4
5
6
7
8
9
10
from numba import njit
 
@njit
def fact(x):
    f=1
    while x != 0 and x != 1:
        f*=x*(x-1)
        x-=2
    return f
print(fact(100))
На fact(50) вообще отрицательное значение выдаёт. Отчего такое может быть?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.01.2020, 20:09
Ответы с готовыми решениями:

Numba использует GPU?
Здравствуйте! После запуска кода с циклом в диспетчере задач вижу 50% нагрузку всех ядер ЦП, действительно ли numba использует GPU? Тест...

Как ускорить код? Numba?
Подскажите как можно ускорить код? TXT файлы весят 20MB, python долго считывает их. Пытался через библиотеку ‘Numba’, но слишком много...

Ошибка при установке пакета numba
здравствуйте, прочитал на ресурсе # ускорять код Python, чтобы ускорить функцию, надо перед её определением вписать декоратор njit: @njit...

5
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
21.01.2020, 20:19
Цитата Сообщение от Matrix3007 Посмотреть сообщение
Отчего такое может быть?
В Python числа безразмерные. А numba как я понимаю в С++ транслирует код и потом компилирует своим JIT.
И с длинной арифметикой там не так просто как в Python.
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
21.01.2020, 20:24  [ТС]
Garry Galler, Хм, не знал. В си я ещё не лез, не в курсе. Получается, мне надо будет как-то вручную прописывать эти даблы и лонги (или как они там называются)?
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
22.01.2020, 16:24
Matrix3007, дайте-ка угадаю. Вы решаете какую-то задачку, типа олимпиадной, с факториалом. И не получается, потому что даже питон дохнет на таких больших числах. Но вы где-то краем уха слышали, что numba ускоряет работу с числами, и надеетесь, что он поможет. Так?
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
22.01.2020, 17:36  [ТС]
dondublon, Не совсем) Я вычисляю пи, факториал просто в пример. Питон не дохнет, но хотелось бы быстрее)
0
in code we trust
 Аватар для __py__
133 / 162 / 12
Регистрация: 29.02.2016
Сообщений: 885
26.01.2020, 13:20
Цитата Сообщение от Matrix3007 Посмотреть сообщение
Питон не дохнет, но хотелось бы быстрее)
через алгоритм побитового сдвига.

Добавлено через 8 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# coding utf-8
 
 
def naive(a, b):  # алгоритм перемножения чисел
    xa = a
    z = 0
    while xa > 0:
        z = z + b
        xa = xa - 1
    return z
print(naive(2**2, 2**2))
 
 
def ru(a, b):
    x = a
    y = b
    z = 0
    while x > 0:
        if x % 2 == 1:
            z = z + y
        y = y << 1
        x = x >> 1
    return z
print(ru(77**7, 5**9))
# рус крестьянин
s = 0
for i in range(10):
    s = s + i
print(s)
 
 
def rec_rus(a, b):
    if a == 0:
        return 0
    if a % 2 == 0:
        return 2*rec_rus(a/2, b)
    return b + 2*rec_rus((a-1)/2, b)
print(rec_rus(678, 315))
# рекурс рус крестьянин (не перемножает в степенях ** - ошибка)
чтобы было понимание, что это
дальше всё просто

Добавлено через 13 минут
а ещё быстрее будет написать на си и вызвать си код из python

Добавлено через 17 минут
хотя на чистом си ещё быстрее.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    #include<stdio.h>  
      
    long factorial(int n)  
    {  
      if (n == 0)  
        return 1;  
      else  
        return(n * factorial(n-1));  
    }  
       
    void main()  
    {  
      int number;  
      long fact;  
      printf("Enter a number: ");  
      scanf("%d", &number);   
       
      fact = factorial(number);  
      printf("Factorial of %d is %ld\n", number, fact);  
      return 0;  
    }
Добавлено через 1 минуту
в общем я показал код осталось только вызвать его с помощью ctype

Добавлено через 14 секунд
сам напишешь надеюсь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.01.2020, 13:20
Помогаю со студенческими работами здесь

Valueerror cannot compute fingerprint of empty list Numba
Решил попробовать ускорить код при помощи Numba, но получаю ошибку Cписок точно не пустой, т.к до этого он выводится и без Numba работает

Что не так с кодом? ( пытаюсь понять, что не так? )
Есть исходный код. Hook, работает хорошо, но есть минус огромный - перестаёт писать в лог, при открытии программы\игры Фуллскрином. т.е...

numba jit внутри класса, либо с обращением к атрибутам экземпляра
Здравствуйте! Прошу прощения, если пишу не в том разделе. Есть написанная программа, в которой описана функция с достаточно...

Что не так с компилятором или почему программа рушится просто так?
Не обращайте внимание на г*внокод, в котором смешаны и Си и Си ++, здесь это не играет никакой роли. Вопрос в том, почему на онлайн...

Скажите как сделать так что бы не было так много if?
using Telegram.Bot; using Telegram.Bot.Exceptions; using Telegram.Bot.Extensions.Polling; using Telegram.Bot.Types; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru