簡體   English   中英

錯誤:“執行並行python代碼后發生進程'xxx'未找到”

[英]Error: “The process 'xxx' not found” occurs after executing parallel python code

我使用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.

這個答案歸功於Parallel Python論壇的wprins。 我在這里發布,因為這個網頁目前首先在谷歌上顯示。 從wprins的回答

PP適用於pypy(在Windows上),但是在關機時,由於子進程已經死亡且缺席,您在pp.py第823行(版本1.6.5)中調用'TASKKILL'時會收到(無害)失敗消息在調用TASKKILL時。 使用普通的CPython不會發生這種情況,我沒有調查為什么CPython和PyPy之間存在差異。

盡管如此,由於它是無害的,並且子進程已經消失,我想建議修改TASKKILL行如下以抑制虛假錯誤輸出:

導致此錯誤消息的TASKKILL行位於文件pp.py中。 在版本1.6.5的pp中,它是第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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM