作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 python 脚本,可以使用 os.subprocess 模块运行一些外部命令。但是其中一个步骤需要很长时间,所以我想单独运行它。我需要启动它们,检查它们是否完成,然后执行下一个不并行的命令。我的代码是这样的:
nproc = 24
for i in xrange(nproc):
#Run program in parallel
#Combine files generated by the parallel step
for i in xrange(nproc):
handle = open('Niben_%s_structures' % (zfile_name), 'w')
for i in xrange(nproc):
for zline in open('Niben_%s_file%d_structures' % (zfile_name,i)):handle.write(zline)
handle.close()
#Run next step
cmd = 'bowtie-build -f Niben_%s_precursors.fa bowtie-index/Niben_%s_precursors' % (zfile_name,zfile_name)
最佳答案
对于您的示例,您只想并行处理 - 您不需要线程。
在subprocess
模块中使用Popen
构造函数:http://docs.python.org/library/subprocess.htm
为您生成的每个进程收集 Popen
实例,然后 wait()
让它们完成:
procs = []
for i in xrange(nproc):
procs.append(subprocess.Popen(ARGS_GO_HERE)) #Run program in parallel
for p in procs:
p.wait()
你可以摆脱这个(而不是使用 multiprocessing
或 threading
模块),因为你对这些互操作并不真正感兴趣 - 你只是想要操作系统并行运行它们并确保它们在您合并结果时都已完成...
关于python - 如何在python中运行并行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11954021/
我是一名优秀的程序员,十分优秀!