错误:";过程';xxx和x27;“未找到”;在执行并行python代码后发生

错误:";过程';xxx和x27;“未找到”;在执行并行python代码后发生,python,parallel-processing,system,Python,Parallel Processing,System,我正在使用Python3()的一个pp()端口运行一个并行python代码,在代码执行完毕后,我立即遇到了这个错误: ERROR: The process "12492" not found. 对于用于并行程序的每个处理器,我都会得到一个错误,每个处理器都有不同的数字,并且每次运行程序时数字都会改变。如果指定要使用的工作进程或CPU的数量,则也会出现以下错误: ERROR: The process with PID 13440 could not be terminated. Reason:

我正在使用Python3()的一个pp()端口运行一个并行python代码,在代码执行完毕后,我立即遇到了这个错误:

ERROR: The process "12492" not found.
对于用于并行程序的每个处理器,我都会得到一个错误,每个处理器都有不同的数字,并且每次运行程序时数字都会改变。如果指定要使用的工作进程或CPU的数量,则也会出现以下错误:

ERROR: The process with PID 13440 could not be terminated.
Reason: The operation attempted is not supported.
每次程序运行时,PID后的数字也会改变。如果程序未并行运行,则不会发生这种情况。此错误发生在程序完成运行后,因此不会影响其功能

有没有办法避免这个错误

编辑:下面是一个导致错误的简单程序

import ppft

def main(x): return x

#Parallel set-up
ppservers = ('*',)      
job_server = ppft.Server(ppservers = ppservers)
ncpus = job_server.get_active_nodes()['local']
print('Starting Parallel Process with', ncpus, 'Workers')

jobs = [(input, job_server.submit(main,(input,), (), ())) for input in range(ncpus)]
#Run parallel jobs
for input, job in jobs:
    print(job())
这是输出:

C:\Users\Mark\Dropbox\Visual Studio Projects\TestModule\TestModule>TestModule.py
Starting Parallel Process with 4 Workers
0
1
2
3

C:\Users\Mark\Dropbox\Visual Studio Projects\TestModule\TestModule>ERROR: The process "10804" not found.
ERROR: The process "14300" not found.
ERROR: The process "3932" not found.
ERROR: The process "4548" not found.

这个答案归功于并行Python论坛的wprins。我把它贴在这里,因为这个网页目前首先出现在谷歌上。从wprins'开始:

PP与pypy(在Windows上)配合得很好,但是在关机时,由于调用TASKKILL时子进程已经死亡且不存在,因此在PP.py第823行(版本1.6.5)中调用“TASKKILL”会收到(无害的)失败消息。使用普通的CPython不会发生这种情况,我也没有研究CPython和PyPy之间为什么会有不同

尽管如此,由于它是无害的,并且子进程已经不存在了,我建议对TASKKILL行进行如下修改,以抑制虚假错误输出:

导致此错误消息的TASKKILL行位于文件pp.py中。在pp的1.6.5版中,它是第823行。在ppft的1.6.4.7.1版中,它位于第874行(靠近文件末尾)。本例中的文件pp.py位于目录“Python36\Lib\site packages\ppft-1.6.4.7.1-py3.6.egg\pp.py”中

要抑制错误消息,请将行更改为:

os.popen('TASKKILL /PID '+str(worker.pid)+' /F')
致:


这个答案归功于并行Python论坛的wprins。我把它贴在这里,因为这个网页目前首先出现在谷歌上。从wprins'开始:

PP与pypy(在Windows上)配合得很好,但是在关机时,由于调用TASKKILL时子进程已经死亡且不存在,因此在PP.py第823行(版本1.6.5)中调用“TASKKILL”会收到(无害的)失败消息。使用普通的CPython不会发生这种情况,我也没有研究CPython和PyPy之间为什么会有不同

尽管如此,由于它是无害的,并且子进程已经不存在了,我建议对TASKKILL行进行如下修改,以抑制虚假错误输出:

导致此错误消息的TASKKILL行位于文件pp.py中。在pp的1.6.5版中,它是第823行。在ppft的1.6.4.7.1版中,它位于第874行(靠近文件末尾)。本例中的文件pp.py位于目录“Python36\Lib\site packages\ppft-1.6.4.7.1-py3.6.egg\pp.py”中

要抑制错误消息,请将行更改为:

os.popen('TASKKILL /PID '+str(worker.pid)+' /F')
致:


如果您可以展示您正在使用的代码(最好是一个说明问题的最小但完整的示例),可能会有所帮助。根据目前为止的信息,我只能说,在第二个进程终止后,一个进程可能试图使用第二个进程。@Simon:我添加了一个简单的程序,该程序会给我造成相同的错误。由于我在谷歌上没有看到任何类似的问题,我怀疑这可能是特定于机器的问题,但我在笔记本电脑上尝试了这一点,得到了相同的错误。(已测试Windows 10、python 3.4和3.5)我在这段代码中遇到了完全相同的问题。当我将示例3从修改为使用
ppft
在Python 3中工作时,我也发现了类似的错误。这使我认为我们必须深入研究移植的库代码,这不是您的代码的问题。如果您可以显示您正在使用的代码(最好是说明问题的最小但完整的示例),可能会有帮助。根据目前的信息,我只能说,在第二个进程终止后,一个进程可能试图使用第二个进程。@西蒙:我添加了一个简单的程序,导致了相同的错误。因为我在谷歌上没有看到任何类似的问题,我怀疑这可能是特定于机器的,但是我在我的笔记本电脑上尝试了这一点,但也出现了同样的错误我在这段代码中遇到了完全相同的问题。当我将示例3从修改为使用
ppft
在Python 3中工作时,我还发现了一个类似的错误。这使我认为我们必须深入研究移植的库代码,这不是您的代码的问题。