2015-12-01 8 views
2

У меня есть сценарий python A.py и он принимает аргументы с целевым файлом с некоторым list of IPs и выдает файл CSV с информацией, найденной относительно IP-адресов из некоторых источников. (Run Method : python A.py Input.txt -c Output.csv).Проблема параллельной обработки в Python

Потребовалось много времени, чтобы выполнить работу. Позже я разделить входной файл (split -l 1000 Input.txt) -> созданные каталоги (10 directories) -> выполняется скрипт с Input расщепляется в 10 каталогах параллельно в режиме screen

Как сделать этот вид работ эффективно? Любые предложения, пожалуйста?

+0

вы можете использовать потоки python для своей задачи –

+1

https://docs.python.org/2/library/thread.html –

+0

Спасибо, Алекс заглянет! – Arun

ответ

1

Попробуйте это:

parallel --round --pipepart -a Input.txt --cat python A.py {} -c {#}.csv 

Если A.py может читать из FIFO, то это более эффективно:

parallel --round --pipepart -a Input.txt --fifo python A.py {} -c {#}.csv 

Если ваш диск долго искать раз, то это может быть быстрее использовать --pipe вместо от --pipepart.

+0

@ ole Спасибо за ответ. Я не вижу никакого процесса. Я получаю подсказку на экране «parallel: Warning: Input считывается с терминала. Только специалисты делают это специально. Нажмите CTRL-D, чтобы выйти» и что делает {#}. csv означает! Означает ли это какой-либо файл CSV в каталоге? – Arun

+0

Вы попали по адресу http://stackoverflow.com/questions/16448887/gnu-parallel-not-working-at-all –

+0

{#} - строка подстановки для номера задания. Таким образом, он передаст 1.csv на первое задание, 2.csv на другое и так далее. –