Запустите команду для всех файлов параллельно - PullRequest
2 голосов
/ 16 декабря 2010

У меня есть следующая команда на сервере сборки как часть процесса сборки:

os.system ('signtool sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll "%s\\*.exe"' % (dir) )

Эта команда подписывает каждый исполняемый файл в указанном каталоге. Есть ли способ запустить эту команду параллельно для каждого исполняемого файла с использованием Python? Есть ли что-то вроде OpenMP для Python?

Ответы [ 3 ]

1 голос
/ 16 декабря 2010

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

1 голос
/ 16 декабря 2010

Приведенные выше ответы являются вполне разумными способами приблизиться к вещам со стороны Python, например,

from multiprocessing import Pool
import os

def processFile(x):
    return os.system('ls '+x)

if __name__ == '__main__':
    pool = Pool(processes=2)
    files=['foo','foo.py','foo.cpp','foo.txt','foo.bar']
    result = pool.map(processFile, files)
    print 'Results are', result

Но если вы все равно используете оболочку, вы можете рассмотреть возможность использования Gnu Parallel на стороне оболочки, которая работает как xargs, но выполняет отдельные задачи параллельно, с возможностью управления количеством задания могут выполняться одновременно и т. д.

1 голос
/ 16 декабря 2010

Может быть, multiprocessing может помочь здесь?

В частности, multiprocessing.Pool.map() может иметь отношение к вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...