В настоящее время у меня есть требование провести сравнение строк, содержащих MAC-адреса (например, «11: 22: 33: AA: BB: CC» с использованием Python 2.7. В настоящее время у меня есть предварительно настроенный набор, содержащий MAC-адрес, и мой сценарий повторяет через набор, сравнивающий каждый новый MAC-адрес с указанными в списке. Это отлично работает, но по мере роста набора скрипт сильно замедляется. Имея всего 100 или около того, вы можете заметить огромную разницу.
Есть ли у кого-нибудь советы по ускорению этого процесса? Является ли их хранение в наборе лучшим способом для сравнения или лучше, например, хранить их в CSV / DB?
Пример кода ...
def Detect(p):
stamgmtstypes = (0,2,4)
if p.haslayer(Dot11):
if p.type == 0 and p.subtype in stamgmtstypes:
if p.addr2 not in observedclients:
# This is the set with location_mutex:
detection = p.addr2 + "\t" + str(datetime.now())
print type(p.addr2)
print detection, last_location
observedclients.append(p.addr2)
observedclients
тот, который предполагается набором? Что ж, судя по тому, что вы показываете, это список, а не набор. В наборах нет.append
метода. Добавляешь в наборы с.add
. - person Avaris   schedule 21.10.2011[]
создает список. Вам нужноset()
, чтобы создать его. И вы добавляете к немуobservedclients.add(p.addr2)
. Это может улучшить производительность. - person Avaris   schedule 21.10.2011