并行处理所有文件的命令

2 投票
3 回答
2509 浏览
提问于 2025-04-16 08:36

我在构建服务器上有一个命令,这是构建过程的一部分:

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

这个命令会对指定目录中的每个可执行文件进行签名。有没有办法用Python让这个命令对每个可执行文件同时运行呢?Python里有没有类似于OpenMP的东西?

3 个回答

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,但它可以同时运行多个任务,并且你可以选择同时运行多少个任务等等。

1

也许 multiprocessing 这个模块可以帮到你?

特别是 multiprocessing.Pool.map() 这个功能,可能正好符合你的需求。

1

你可以使用线程。这个教程展示了如何用线程来做你所提到的类似的事情。

撰写回答