Можете ли вы продублировать / объяснить эту причудливую «двойную» временную / реальную аномалию? - PullRequest
0 голосов
/ 20 марта 2020

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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...