Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python调用中并行化外部程序?_Python_Parallel Processing - Fatal编程技术网

在python调用中并行化外部程序?

在python调用中并行化外部程序?,python,parallel-processing,Python,Parallel Processing,我有一个无法更改的外部程序。 它读取一个输入文件,进行一些计算,然后写出一个结果文件。我需要运行一百万个左右的输入参数组合。 我目前的做法是,打开一个模板文件,更改其中的一些字符串(以输入新参数),将其写出,使用os.popen()启动程序,读取输出文件,对结果进行chisquare测试,然后使用另一组参数重新启动 外部程序只在一个内核上运行,因此我尝试将参数空间分割,并在不同的文件夹中启动多个实例。不同的文件夹是必要的,因为程序会覆盖其输出文件。这是可行的,但仍然需要约24小时才能完成 是否可

我有一个无法更改的外部程序。 它读取一个输入文件,进行一些计算,然后写出一个结果文件。我需要运行一百万个左右的输入参数组合。 我目前的做法是,打开一个模板文件,更改其中的一些字符串(以输入新参数),将其写出,使用os.popen()启动程序,读取输出文件,对结果进行chisquare测试,然后使用另一组参数重新启动

外部程序只在一个内核上运行,因此我尝试将参数空间分割,并在不同的文件夹中启动多个实例。不同的文件夹是必要的,因为程序会覆盖其输出文件。这是可行的,但仍然需要约24小时才能完成

是否可以在不覆盖结果文件的情况下将其作为单独的进程运行?或者你认为我还能做些什么来加速这一进程


Thx.

如果这个程序正在运行,那么它的计算速度很快(似乎是这样),IO控制着一切,所以并行调用没有多大帮助(HDD太慢)。如果可能,使用该程序时不要写入文件,例如使用stdin、stdout。我对脚本中的各个步骤进行了计时,运行外部程序所需的时间大约是io步骤总和的10倍。如果我手动启动7个实例,它将在20分钟内完成(用于测试),而不是3.5小时。因此,在io变得相关之前,我可能会启动更多的实例。但是,我如何能够在不让输出文件被其他运行进程覆盖的情况下自动执行此操作呢?是否有可能将一个实例加载到每个实例所特有的虚拟区域中?如果这个程序的计算速度很快(看起来很快),IO主宰一切,因此并行调用没有多大帮助(HDD太慢)。如果可能,使用该程序时不要写入文件,例如使用stdin、stdout。我对脚本中的各个步骤进行了计时,运行外部程序所需的时间大约是io步骤总和的10倍。如果我手动启动7个实例,它将在20分钟内完成(用于测试),而不是3.5小时。因此,在io变得相关之前,我可能会启动更多的实例。但是,我如何能够在不让输出文件被其他运行进程覆盖的情况下自动执行此操作呢?是否有可能将一个实例加载到每个实例所特有的某种虚拟区域中?