ФорумПрограммированиеPython → Multithreading - Thread Pool

Multithreading - Thread Pool

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 15 декабря 2011 г. 20:05

    Надо. Никто не знает либы? не хочу писать велосипед, надеюсь не придется :-)

    Задача - например в 100 потоков делать какую то хуйню и например при получении сигнала что освободилось место в пуле - занять его :-)

    Сумбурно, но както так по человечьи
    Сапожник без сапог
  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 15 декабря 2011 г. 20:14, спустя 8 минут 49 секунд

    phpdude, вчера вроде на хабре про CThread писали
  • Ivan

    Сообщения: 1316 Репутация: N Группа: Адекваты

    Spritz 15 декабря 2011 г. 20:18, спустя 3 минуты 18 секунд


    phpdude, вчера вроде на хабре про CThread писали


    1. это топик про питон
    2. CThread говно как и все "многопоточности" на пхп
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 15 декабря 2011 г. 20:25, спустя 7 минут 40 секунд


    phpdude, вчера вроде на хабре про CThread писали
    удава поймал!
    Спустя 19 сек.
    зы: в пхп многопотчности нет, а если есть то она гавно, как и сам пхп :-)
    Сапожник без сапог
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 15 декабря 2011 г. 20:51, спустя 26 минут 13 секунд

  • Troy

    Сообщения: 2532 Репутация: N Группа: Джедаи

    Spritz 15 декабря 2011 г. 20:58, спустя 7 минут 3 секунды

    Упс, не прочитал категорию топика ^^ сам думаю "нахрена?"
  • PandoraBox2007

    Сообщения: 21 Репутация: N Группа: Адекваты

    Spritz 17 декабря 2011 г. 8:09, спустя 1 день 11 часов 10 минут

    лови http://code.google.com/p/pyev/
    Спустя 143 сек.
    или вот http://packages.python.org/pyev/pyev.html
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 17 декабря 2011 г. 11:48, спустя 3 часа 39 минут 14 секунд

    phpdude, а тебе для чего?

    Вообще Queue.Queue все юзают так или иначе. Например: http://www.ibm.com/developerworks/aix/library/au-threadingpython/
    Вот говорят в 3.2 появился concurent.futures (http://asvetlov.blogspot.com/2011/02/3.html), может его можно портировать под 2.7

    А лучше, конечно, в сторону асинхронности посмотреть. Только для этого не обязателен libev, как пишет PandoraBox2007. Если тебе, например, надо интернет собирать быстро-быстро, то pycurl лучшее решение.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 17 декабря 2011 г. 12:31, спустя 42 минуты 51 секунду

    Если тебе, например, надо интернет собирать быстро-быстро, то pycurl лучшее решение

    ага, его и надо собирать … две задачки - для моих тестов мне надо спарсить почти 7млн страниц, не хочу полгода ждать, это думаю понятно ну и ваще поисковичек небольшой, тоже придется с несколькими миллионами поработать :-)
    Сапожник без сапог
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 17 декабря 2011 г. 13:08, спустя 37 минут 2 секунды

    phpdude, ну тогда уже все велосипеды написаны. Смотри scrapy или tornado асинхронный клиент
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 17 декабря 2011 г. 19:47, спустя 6 часов 38 минут 41 секунду

    то pycurl лучшее решение

    блеядь это же мой любимый курл на питоне! :-)

    Высадка только в том, что в коде который я увидел в экзамплах он такой же уебищный и обертка эта как бы не дохуя дает ))

    у меня есть для пыха своя разработочка DudeCurlMulti, вот она жарит не под детски, придется чтото такое же под пайтон чтоли писать %)

    просто в экзамплах описание - страшно так юзать, нихуя не удобно и надо самому все состояния отслеживать, это пиздец имхо =)
    Спустя 200 сек.
    у меня вот такое юзобретение с калбаками, на котором многоптоочный парсер с проксями написать - дело 15 строк вместе с обработкой результатов :D


    function getCurl($url, $proxy = false)
    {
    $options = array(
    "useragent" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6 GTB6",
    "connecttimeout" => 10,
    "timeout" => 10
    );

    if ($proxy) {
    $options['proxy'] = $proxy;
    }
    return new DudeCurl($url, $options);
    }


    $mc = new DudeCurlMulti(PROXY_CHECK_THREADS);
    foreach ($proxylist as $proxy)
    {
    $curl = getCurl(PROXY_CHECK_URL, $proxy);
    $mc->AddCurl($curl, "checkProxyCallback", $proxy);
    }
    $mc->Process();

    function checkProxyCallback(DudeCurlMulti $mc, DudeCurl $curl, $html, $proxy)
    {
    if (!$html || $curl->Response->HttpCode != 200) {
    return;
    }

    $id = parse_url(PROXY_CHECK_URL, PHP_URL_QUERY);
    parse_str($id, $id);
    if (md5($id['id']) != $html) {
    return;
    }

    echo ".";
    global $proxies;
    $proxies[] = $proxy;
    }


    это был многопоточный чекер прокси
    Сапожник без сапог
  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 17 декабря 2011 г. 21:22, спустя 1 час 35 минут 5 секунд

    phpdude, зачем писать то что-то?

    Ну ещё раз:

    phpdude, ну тогда уже все велосипеды написаны. Смотри scrapy или tornado асинхронный клиент



    вот торнадовский клиент, который на pycurl: http://www.tornadoweb.org/documentation/httpclient.html
    вот scrapy (он на twisted), по сути медленнее, но зато совершенно полноценны: http://doc.scrapy.org/en/0.14/intro/tutorial.html
    Спустя 144 сек.
    scrapy - это фреймворк для краулинга. Джанго наоборот. Сбор любого сайта сводится к десяткам двум строчек практически конфигурирования.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 17 декабря 2011 г. 21:31, спустя 9 минут 15 секунд

    mathete, а вот асинхронный торнадо мне понравится я думаю :-)

    я scrapy посмотрел, это чуток не то :-)

    ладно попробую заюзать, на неделе, не щас :)
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!