У меня есть программа, над которой я работаю, которая будет читать из двух "сетевых источников" одновременно. Я хотел попробовать асинхронный подход, а не использовать потоки. Это заставило меня задуматься, какую библиотеку использовать ...
Я придумал простой пример кода, который демонстрирует, что будет делать моя программа:
import sniffer
def first():
for station in sniffer.sniff_wifi():
log(station.mac())
def second():
for station in sniffer.sniff_ethernet():
log(station.mac())
first()
second()
Два метода сниффера
выглядят примерно так:
def sniff_wifi(self):
while True:
yield mac_address
Цикл while True
явно блокирует их.
Я хочу использовать asyncore
для этого, поскольку он является частью стандартной библиотеки. Никакие сторонние зависимости не являются бонусом. Однако это не значит, что я не буду использовать его, если вы порекомендуете мне ...
Могу ли я добиться того, что я пытаюсь сделать с помощью asyncore? Если да, не могли бы вы показать мне, как преобразовать мой примерный код в «асинкорный код»? Знаете ли вы какие-нибудь хорошие учебники по асинхронному программированию?