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