Недавно я установил Cython и использую его для ускорения моей программы python (тест на простоту). Поскольку я даю небольшое число, оно работает нормально и работает намного быстрее. Но, получив такое огромное количество, мой компьютер начал зависать, когда процессор и оперативная память достигают 100%.
Есть ли способ ограничить использование процессора и оперативной памяти Cython?
Вот мой код путь (на языке Cython):
from math import *
cpdef trial_factoring(float M, float p, list bits_list):
cdef float t
t = sqrt((M+1)*2)
cdef float k_range
k_range = (t-1)//(2*p)
cdef float k
k = 1
cdef list potential_filter
potential_filter = []
cdef float potential
while k <= k_range:
potential = 2*k*p + 1
if potential % 8 == 3 or potential % 8 == 5:
pass
else:
potential_filter.append(potential)
k += 1
cdef int a
a = 1
cdef int factor
cdef int i
for factor in potential_filter:
for i in range(len(bits_list)):
a *= a
if bits_list[i] == 1:
a *= 2
a %= factor
if a == 1:
return False
return True