并行运行所有文件的命令

时间:2010-12-16 07:59:21

标签: python parallel-processing

我在构建服务器上有以下命令作为构建过程的一部分:

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

此命令对指定目录中的每个可执行文件进行签名。有没有办法使用Python为每个可执行文件并行运行此命令?是否有类似OpenMP的Python?

3 个答案:

答案 0 :(得分:1)

或许multiprocessing可能对此有所帮助?

具体而言,multiprocessing.Pool.map()可能与您的需求相关。

答案 1 :(得分:1)

你可以使用线程。 This tutorial显示了如何执行类似于您要求使用线程的内容。

答案 2 :(得分: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

但是如果你还在使用shell,你可能要考虑在shell端使用Gnu Parallel,它像xargs一样运行,但并行执行各个任务,并提供控制可以运行的作业数量的选项同时等等。