错误:"流程' xxx'找不到"在执行并行python代码后发生

时间:2016-08-12 01:03:57

标签: python parallel-processing system

我使用pp(http://www.parallelpython.com//)的端口为python 3(https://pypi.python.org/pypi/ppft)运行并行python代码,并且我在代码完成执行后立即收到此错误:

ERROR: The process "12492" not found.

我为并行程序使用的每个处理器收到一个错误,每个处理器都有不同的编号,每次运行程序时编号都会改变。如果我指定要使用的worker或cpus的数量,那么我也会收到此错误:

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.

1 个答案:

答案 0 :(得分:0)

该答案的信誉来自Parallel Python论坛的wprins。我将其发布在这里,因为此网页当前首先显示在google上。来自wprins的answer

PP与pypy兼容(在Windows上),但是在关闭时,由于子级的原因,您会从pp.py第823行(版本1.6.5)中调用“ TASKKILL”得到(无害)失败消息调用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')

收件人:

os.popen('TASKKILL /PID '+str(worker.pid)+' /F 2>NUL')