Я пишу в основном сканер портов (не совсем, но это близко). Пинг-машины по очереди медленны, поэтому мне определенно нужна какая-то параллельная обработка. Шея бутылки определенно является сетевым вводом-выводом, поэтому я думал, что потоки будут достаточными (с существующим GIL-файлом python), они проще в использовании. Но вместо этого использование процессов приведет к значительному увеличению производительности (15% +)?нити или процессы
К сожалению, у меня нет времени, чтобы попробовать оба подхода и выбрать лучший из них основаны на некоторых измерениях или что-то:/
Спасибо :)
Вы можете использовать параллельную библиотеку, Gevent, Greenlet, Twisted ... Здесь есть список связок http://wiki.python.org/moin/Concurrency/ – Justin
Если у вас есть время задать вопрос о SO и ждать ответа, у вас есть время попробовать в обоих направлениях. Для перехода от, например, 'concurrent.futures.ThreadPoolExecutor' к' concurrent.futures.ProcessPoolExecutor', и, возможно, 30 секунд для записи тестового жгута производительности потребуется около 5 секунд. – abarnert
эти «пул» для меня действительно не подходят, мне нужен больше контроля над отдельными аргументами потоков/процессов, которые они предлагают:/В противном случае это будет кусок торта :) – Paladin