просто передайте весь код в качестве аргумента timeit:
import timeit
print(timeit.timeit("""
limit = 10000
prime_list = [i for i in range(2, limit+1)]
for prime in prime_list:
for elem in range(prime*2, max(prime_list)+1, prime):
if elem in prime_list:
prime_list.remove(elem)"""
, number=10))
Есть функция, которая грубо хочет, которую вы хотите, но она интенсивна и замедляет запросы. Возможно, вы сможете использовать его в своих обстоятельствах, я использовал его раньше. Это называется Левенштейн. Вы можете получить его здесь Как добавить функцию levenshtein в mysql?
То, что вы хотите сделать, называется нечетким поиском. Вы можете использовать функцию SOUNDEX в MySQL, зарегистрированную здесь:
http://dev.mysql.com/doc/refman/5.7/ru/string-functions.html#function_soundex
Запрос будет выглядеть так:
SELECT * FROM dictionary
, где SOUNDEX (word
) = SOUNDEX (: yourSearchTerm)
... где ваш поисковый запрос связан с: значением параметра yourSearchTerm.
Следующим шагом будет попытка реализовать и использовать функцию Levenshtein в MySQL. Один из них описан здесь:
http://www.artfulsoftware.com/infotree/qrytip.php?id=552
Левенштейн расстояние между двумя строками - это минимальное количество операций, необходимых для преобразования одной строки в другую, где операция может быть вставкой, удалением или заменой одного символа.
blockquote>Вы также можете рассмотреть возможность поиска базы данных, предназначенные для полного поиска текста, такие как Elastic Search, который обеспечивает это изначально:
https://www.elastic.co/guide/en/elasticsearch/reference/current/query -dsl-нечеткой query.html
вы можете использовать функцию soundex () для сравнения фонетически
, ваш запрос должен выглядеть примерно так:
select * from table where soundex(word) like soundex('helo');
, и это вернет вам hello
строка