Какая асинхронная библиотека Python лучше всего подходит для моего кода? Асинкор? Twisted?

У меня есть программа, над которой я работаю, которая будет читать из двух "сетевых источников" одновременно. Я хотел попробовать асинхронный подход, а не использовать потоки. Это заставило меня задуматься, какую библиотеку использовать ...

Я придумал простой пример кода, который демонстрирует, что будет делать моя программа:

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? Если да, не могли бы вы показать мне, как преобразовать мой примерный код в «асинкорный код»? Знаете ли вы какие-нибудь хорошие учебники по асинхронному программированию?

18
задан Quentin Pradet 19 May 2015 в 08:25
поделиться