Найти - Пользователи
Полная версия: Асинхронное программирование под Windows на основе IOCP.
Начало » Python для экспертов » Асинхронное программирование под Windows на основе IOCP.
1
DHT
Перерыл весь инет. Нашел несколько библиотек, которые имеют полную/частичную поддержку IOCP, реализованную ctypes или pywin32, но не это главное.

Задача: считать первые 16 байт для 1 миллиона адресов, среди которых много нерабочих.
Сложность в том, что нужно под Windows, т.к. там быстро работает только IOCP, который мало где реализован.

Что пробовал:
1) pyuv. Известный Node.js использует libuv, к нему есть интерфейс на Python - pyuv, который так и не удалось установить ни на Windows 2007, ни на Windows Server 2003. Пробовал и через Visual Studiio и через MinGW.
2) Twisted - там IOCP мало где используется и толку особого не дает.
3) Asyncoro - очень медлненно почему-то, IPv6 вызывают ошибки.
4) Asyncake - без доков, вообще не понял что с ним делать. Но судя по коду IOCP там все же еще не доделано.
5) Cogen - вроде бы и довольно быстро работает, то тоже груда ошибок или я что-то делаю не так. Буду признателе за рабочий пример.
s0rg
libevent со 2 версии использует IOCP, вроде.
DHT
s0rg
bevent со 2 версии использует IOCP, вроде.
Рассматривал libev, libevent, libevent2, libuv.
Судя по всему нормально IOCP работает только в libuv, но с pyuv никак не получается поработать.

Libevent2 also supports IOCP, via asynchronous bufferevents. However this feature is marked as experimental and neither libevent-http nor libevent-dns use it. Gevent does not wrap bufferevents, so gevent 0.13 is not benefiting from IOCP even if compiled with libevent2.
Источник: http://blog.gevent.org/2011/04/28/libev-and-libevent/
pyuser
DHT
Судя по всему нормально IOCP работает только в libuv, но с pyuv никак не получается поработать.
Какая версия Python'а? У меня python 3.3, на работе 32 разрядный виндовоз дома 64 разрядный, pyuv собирается без проблем.
DHT
Python 2.7
Чем собираешь?
pyuser
Cлил исходники pyuv и libuv. Распаковал pyuv (обычно во временную папку), в папке с исходниками pyuv создал папку deps и в ней папку libuv, в эту папку распаковал исходники libuv, вернулся в корень исходников pyuv и в файле setup_libuv.py закомментировал 106 и 107 строки, после этого в командной строке выполнил: setup.py build –compiler=msvc bdist_wininst -o

ЗЫ. поскольку у Вас python 2.7 должна быть установлена Microsoft Visual Studio 2008, экспресс версии вполне достаточно
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB