python - 子進(jìn)程執(zhí)行完成為僵尸進(jìn)程,怎么解決
問題描述
我有一腳本,去比較數(shù)據(jù)庫和一個配置文件中一個商品的數(shù)量。少幾個商品就開辟幾個進(jìn)程去創(chuàng)建商品、用的是subprocess.Popen 這個模塊 在這個監(jiān)控腳本中去創(chuàng)建子進(jìn)程去執(zhí)行一個創(chuàng)建的耗時操作。創(chuàng)建完子進(jìn)程后,主進(jìn)程所在的這個腳本就退出了 等待cronjob 定時任務(wù)下一次執(zhí)行。少幾個在創(chuàng)建幾個。但是現(xiàn)在發(fā)現(xiàn),創(chuàng)建的子線程在創(chuàng)建完商品。會成為僵尸進(jìn)程、這個怎么解決。
我看了網(wǎng)上的說的 讓主進(jìn)程等wait() 但是我這里不能讓主進(jìn)程等。因為他子進(jìn)程創(chuàng)建時一個耗時的操作,可能得好久。一個個等。主進(jìn)程就沒法發(fā)退出。那么監(jiān)控腳本就不起作用的 就不能及時補充商品了。、主進(jìn)程的作用就是開辟進(jìn)程 然后等待下次掃描創(chuàng)建少的數(shù)量的進(jìn)程。
想問下大家怎么解決這種問題。父進(jìn)程不用等待子進(jìn)程結(jié)束,而不產(chǎn)生僵尸進(jìn)程。
問題解答
回答1:調(diào)用signal(SIGCHLD, SIG_IGN)通知內(nèi)核對子進(jìn)程的結(jié)束不關(guān)心,由內(nèi)核回收。
相關(guān)文章:
1. 用Java寫發(fā)送郵件的程序,經(jīng)常被當(dāng)做垃圾郵件處理怎么解決2. mysql - 瞬間流量很高的網(wǎng)站,要頻繁的插入數(shù)據(jù)到數(shù)據(jù)庫,應(yīng)該怎么解決這個問題?3. javascript - 蘋果手機下面css3動畫效果出不來,請問要怎么解決呢?4. 重定向次數(shù)過多怎么解決5. java - 前后端分離怎么解決后端數(shù)據(jù)太多的問題?6. 安裝mysql,完成時提示的是用戶名root,在終端查看版本時顯示的不是root,請問這怎么解決7. python3.x - 用批處理的start命令來運行指定Python腳本的時候,只要這個Python腳本的路徑或名字帶有中文就無法執(zhí)行,請問怎么解決?8. python - angular route 與 django urls 沖突怎么解決?9. python 使用requests 訪問 繁體字網(wǎng)站會出現(xiàn)亂碼,不知怎么解決?10. 百度地圖api - Android百度地圖SDK,MapView上層按鈕可見卻不可觸,怎么解決?
