Python 3.8.1
Windows 10.0.1.18363
Intel i3-7100U
Эта программа должна была проверить кое-что о том, как работает механизм регулярных выражений Python. Я удовлетворен, что получил ответ, но столкнулся с аномалией, для которой я не вижу логического объяснения.
Когда я запускаю программу, вывод обычно:
один доллар занимает 0,0156 секунды два $ занимает 0,0156 секунды
Время от времени (и эта частота изменяется от 1 к 20 до 1 к 5 прогонам), один из выходных значений равен 0,0312, что в два раза больше обычного числа. Очень редко я видел 0,0312, отображаемый в обеих выходных строках.
Я запускал эту программу только на одном P C, поэтому мне сначала интересно, могут ли другие увидеть эту аномалию в разных средах. Может кто-нибудь придумать правдоподобное объяснение этой странности?
import re
import time
re1 = re.compile("(000|999)$")
re2 = re.compile("(000$|999$)")
testString = 'R(7df%e+65Q7~00999' * 100;
minTime = 9;
for _ in range(30):
startTime = time.time()
for _ in range(1_000):
re1.search(testString)
endTime = time.time()
if (endTime - startTime < minTime):
minTime = endTime - startTime
print (f"one $ takes {minTime:.4f} seconds")
minTime = 9;
for _ in range(30):
startTime = time.time()
for _ in range(1_000):
re2.search(testString)
endTime = time.time()
if (endTime - startTime < minTime):
minTime = endTime - startTime
print (f"two $ takes {minTime:.4f} seconds")
re: code, связанный в комментарии. Значительные # легче увидеть в модифицированной версии.
import time
times = set()
while len(times) < 10:
times.add(time.time())
t = sorted(times)
for i in range(9):
print (t[i+1] - t[i])