+ -
当前位置:首页 → 问答吧 → python 尝试多进程的困惑

python 尝试多进程的困惑

时间:2011-04-18

来源:互联网

每个文件夹都包含数据文件,参数文件和一个可执行文件exe共三项。不需要传值给exe文件,双击exe就可以运算出结果,执行完毕exe会自动关闭,结果生成单独文件不需要读,但文件夹太多了(60多个)不想打开每个文件夹去双击。写了段python代码如下:
Python code

import os
import sys
#import subprocess

dir=os.getcwd()
for root, dirs, files in os.walk(dir):
    for subfiles in dirs:
        print os.path.join(root,subfiles)
        os.chdir(os.path.join(root,subfiles))
        os.system('xxx.exe')



原理大概是进入每个文件夹激活exe(初级了,呵呵),但是他是单进程的,一个文件夹运算完毕才开始下一个。搞下来耗时也太长了,更惭愧的这样太对不起多核处理器了。

导入subprocess,将os.system('xxx.exe')改为subprocess.Popen('xxx.exe')。exe就不能自动执行了,问题多多,很困惑啊,在此提问,希望高人指点一二...

作者: hebgm   发布时间: 2011-04-18

os.system是同步的,找找异步的(popen好像就是),另外你确定有必要多进程?CPU的基本执行单元是
线程,进程本身是不可执行的,执行的只是它的主线程,而进程的代价比线程高的多。

作者: I_NBFA   发布时间: 2011-04-19

不能自动执行了?出错没有?怎么看出来没自动执行的?

作者: iambic   发布时间: 2011-04-19