2010-12-16 3 views
2

я имею следующую команду на сервере наращивания как часть процесса сборки:команды Run для всех файлов в параллельном

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

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

ответ

1

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

1

Возможно, multiprocessing может быть полезным здесь?

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

1

Приведенные выше ответы вполне разумные пути приближающейся вещи со стороны 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, но выполняет отдельные задачи параллельно, с опциями для управления тем, сколько заданий может выполняться одновременно и т. д.

+0

Gnu Parallel работает только на Linux. – 2010-12-17 07:55:24

Смежные вопросы