У меня есть программа, над которой я работаю, которая будет считываться из двух "сетевых источников" одновременно. Я хотел попробовать асинхронный подход, а не использовать потоки. Это заставило меня задуматься о том, какую библиотеку использовать...
Я придумал простой пример кода, который демонстрирует, что моя программа будет делать:
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()
Два метода sniffer
выглядят примерно так:
def sniff_wifi(self):
while True:
yield mac_address
Цикл while True
, очевидно, блокирует их.
Я хочу использовать asyncore
для этого, поскольку он является частью стандартной библиотеки. Никакие зависимости от третьей стороны не являются бонусом. Однако это не значит, что я не буду использовать его, если вы порекомендуете мне...
Могу ли я достичь того, что я пытаюсь сделать с помощью asyncore? Если да, не могли бы вы показать мне, как преобразовать код примера в "асинхронный код"? Знаете ли вы какие-либо хорошие асинхронные уроки?