DHT
Янв. 4, 2013 02:51:44
Перерыл весь инет. Нашел несколько библиотек, которые имеют полную/частичную поддержку 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
Янв. 4, 2013 12:26:18
libevent со 2 версии использует IOCP, вроде.
DHT
Янв. 4, 2013 13:49:23
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
Янв. 7, 2013 04:08:14
DHT
Судя по всему нормально IOCP работает только в libuv, но с pyuv никак не получается поработать.
Какая версия Python'а? У меня python 3.3, на работе 32 разрядный виндовоз дома 64 разрядный, pyuv собирается без проблем.
pyuser
Янв. 8, 2013 07:10:23
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, экспресс версии вполне достаточно