使用parallel python(pp)时如何处理冗余的python.exe?

时间:2016-04-09 08:22:51

标签: python python-2.7 parallel-processing

我使用python进行蒙特卡罗模拟,需要100次调用外部* .exe进行一次循环,我有20个循环。我使用Win32api.ShellExecute方法定义了一个负责调用外部exe程序的函数。为了避免相互影响,我复制了100个文件夹,每个文件夹都有* .exe程序,它们可以在没有相互影响的情况下运行。

为了加快计算效率,我尝试使用并行python(pp)。我的电脑有4个ncpus,我想用它们同时在不同的文件夹中运行外部* .exe。但我发现随着程序的运行,任务管理器中会有越来越多的python.exe挂起,最终它会提醒我"OSError [Error 24] Too many open files"或python内核意外死亡。我不知道是否有必要处理那些冗余的python.exe,见下图:

Attached Figure

我的并行python代码是:

ppservers=()
    job_server=pp.Server(4,ppservers=ppservers)  #4 is ncpus
    Ne=tuple(range(N))   #N is 100
    jobs=[(i,job_server.submit(runexe,(i,root_directory),(),('win32api',))) for i in Ne]
    for i,job in jobs:
        job()
    while True:
        back_process=os.popen('tasklist |findstr /i ogs.exe').readlines()
        if back_process==[]:
            break
    os.popen('taskkill /f /fi "imagename eq python.exe" /fi "memusage lt 100000"')

0 个答案:

没有答案