При этом, как насчет написания ваших собственных сокетов? Это очень просто в Python и может дать вам удивительную производительность, когда вы знаете, что делаете, и четко понимаете свои цели.

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

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

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 для этого, поскольку это является частью стандартной библиотеки. Никакие сторонние зависимости не являются бонусом. Тем не менее, это не значит, что я не буду использовать его, если вы порекомендуете мне сделать ...

Могу ли я добиться того, что я пытаюсь сделать с помощью асинкоров? Если да, не могли бы вы показать мне, как преобразовать мой пример кода в «асинхронный код»? Знаете ли вы какие-нибудь хорошие асинхронные учебники?

Ответы на вопрос(3)

Ваш ответ на вопрос