鍓嶈█鏈€杩戠敤Python鍐欎簡鍑犱釜绠€鍗曠殑鑴氭湰鏉ュ鐞嗕竴浜涙暟鎹€傚洜涓哄彧鏄竴涓畝鍗曠殑鍔熻兘锛屾墍浠ユ垜鐩存帴浣跨敤print鏉ユ墦鍗版棩蹇椼€備换鍔¤繍琛屾椂鍋跺皵浼氬嚭鐜颁竴浜涘紓甯革細鍥犱负鎴戝湪涓嶅悓鐨勫湴鏂规墦鍗颁簡鏃ュ織锛屾墍浠ユ瘡娆℃姤閿欑殑鍦版柟閮戒笉涓€鏍凤紝瀵艰嚧绋嬪簭杩愯缁撴灉寰堝鎬紱鏈夋椂杩欐浠g爜娌℃湁杩愯锛屼笅娆¤繍琛屽彲鑳芥槸鍙︿竴娈典唬鐮佹病鏈夎Е鍙戙€傝櫧鐒跺綋鏃舵敞鎰忓埌浜咮rokenpipe杩欎釜鍏抽敭寮傚父锛屼絾鏄苟娌℃湁澶湪鎰忥紝鍥犱负浠g爜涓湁浜涘湴鏂规槸鍙戦€乭ttp璇锋眰鐨勩€備竴鐩翠互涓烘槸缃戠粶IO鏈夐棶棰橈紝娌℃兂鍒皃rint杩欎釜鏈€鍩烘湰鐨勬墦鍗板姛鑳金煠斻€傜洿鍒拌繖涓棶棰樺弽澶嶅嚭鐜帮紝鎴戞墠璁ょ湡鐪嬭繖涓紓甯搞€傛垜浠旂粏鐪嬩簡鐪媝rint锛屼笉涔熸槸IO鎿嶄綔鍚楋紵鏄笉鏄唴缃殑鎵撳嵃鍔熻兘鐪熺殑鏈夐棶棰橈紵浣嗘槸鍦ㄦ湰鍦板拰娴嬭瘯鐜锛屾垜璺戜簡鏃犳暟娆★紝閮芥病鏈夊彂鐜板紓甯革紱浜庢槸闂簡杩愮淮锛屾嬁鍒颁簡绾夸笂鐨勬搷浣滄柟娉曘€傚師鏉ヨ繍缁翠负浜嗘柟渚跨淮鎶ゅぇ瀹舵彁浜ょ殑鑴氭湰浠诲姟锛岀淮鎶や簡涓€涓粺涓€鐨勮剼鏈€傚湪杩欎釜鑴氭湰涓紝浣跨敤锛歝md='python/xxx/test.py'os.popen(cmd)鏉ヨЕ鍙戜换鍔★紝杩欎篃鏄笌鎴戞湰鍦板紑鍙戠幆澧冪殑鍞竴鍖哄埆銆侾open鍘熺悊涓烘锛屾垜鍦ㄥ紑鍙戠幆澧冧腑妯℃嫙浜嗕竴涓紓甯革細test.py:importtimeif__name__=='__main__':time.sleep(20)print'1000'*1024task.py:importosimporttimeif__name__=='__main__':start=int(time.time())cmd='pythontest.py'os.popen(cmd)end=int(time.time())print'end****{}s'.format(end-start)run:pythontask.pywaitsfor20sandthisexceptionwillunitablyreappear:Traceback(mostrecentcalllast):File"test.py",line4,inprint'1000'*1024IOError:[Errno32]涓轰粈涔圔rokenpipe浼氬嚭鐜拌繖涓紓甯革紵棣栧厛锛屾偍闇€瑕佷簡瑙e嚱鏁皁s.popen(command[,mode[,bufsize]])鐨勫伐浣滃師鐞嗐€傛牴鎹畼鏂规枃妗g殑瑙i噴锛岃鍑芥暟浼氭墽琛宖ork涓€涓瓙杩涚▼鏉ユ墽琛宑ommand鍛戒护锛屽悓鏃跺皢瀛愯繘绋嬬殑鏍囧噯杈撳嚭閫氳繃绠¢亾杩炴帴鍒扮埗杩涚▼锛涘嵆姝ゆ柟娉曡繑鍥炵殑鏂囦欢鎻忚堪绗︺€傝繖閲岀敾涓浘鍙互鏇村ソ鐨勭悊瑙e師鐞嗭細杩欓噷鐨勪娇鐢ㄥ満鏅紝骞舵病鏈夎幏鍙栧埌popen()鐨勮繑鍥炲€硷紝鎵€浠ommand鐨勬墽琛屾湰璐ㄤ笂鏄紓姝ョ殑锛涗篃灏辨槸璇达紝褰搕ask.py鎵ц鏃讹紝浼氳嚜鍔ㄥ叧闂绔殑绠¢亾銆傚鍥炬墍绀猴紝鍏抽棴鍚庡瓙杩涚▼浼氬悜绠¢亾杈撳嚭print'1000'*1024銆傜敱浜庤繖閲岃緭鍑虹殑鍐呭寰堝锛岀閬撶殑缂撳啿鍖轰細涓€涓嬪瓙琚~婊★紱鎵€浠ュ啓绔細鏀跺埌SIGPIPE淇″彿锛屽鑷碆rokenpipe寮傚父銆備粠缁村熀鐧剧涓紝鎴戜滑涔熷彲浠ョ湅鍒拌繖涓紓甯哥殑涓€浜涙潯浠讹細涔熸彁鍒颁簡SIGPIPE淇″彿銆傝В鍐虫柟妗堟棦鐒剁煡閬撲簡闂鐨勫師鍥狅紝閭d箞瑙e喅灏辩浉瀵圭畝鍗曚簡銆備富瑕佹湁浠ヤ笅鍑犵瑙e喅鏂规硶锛氫娇鐢╮ead()鍑芥暟璇诲彇绠¢亾涓殑鏁版嵁锛屽叏閮ㄨ鍙栧畬鍚庡啀鍏抽棴銆傚鏋滄偍涓嶉渶瑕佸瓙杩涚▼涓殑杈撳嚭锛屾偍杩樺彲浠ュ皢鍛戒护鐨勬爣鍑嗚緭鍑洪噸瀹氬悜鍒?dev/null銆備篃鍙互浣跨敤Python3鐨剆ubprocess.Popen妯″潡杩愯銆傝繖閲屼娇鐢ㄧ涓€绉嶆柟妗堣繘琛屾紨绀猴細importosimporttimeif__name__=='__main__':start=int(time.time())cmd='pythontest.py'withos.popen(cmd)asp:printp銆俽ead()end=int(time.time())print'end****{}s'.format(end-start)杩愯task.py鍚庝笉浼氭姏鍑哄紓甯革紝command鐨勮緭鍑轰篃鏄墦鍗般€傚湪绾夸慨澶嶇殑鏃跺€欐垜娌℃湁閲囩敤杩欎釜鏂规銆備负浜嗘柟渚挎煡鐪嬫棩蹇楋紝鎴戣繕鏄娇鐢ㄦ爣鍑嗙殑鏃ュ織妗嗘灦灏嗘棩蹇楄緭鍑哄埌es锛岃繖鏍峰湪kibana涓彲浠ョ粺涓€鏌ョ湅銆傜敱浜庢棩蹇楁鏋舵病鏈変娇鐢ㄧ閬擄紝鑷劧涓嶅瓨鍦ㄨ繖涓棶棰樸€傝櫧鐒惰В鍐充簡鏇村鐨勫唴瀹归棶棰橈紝浣嗘槸杩樻槸娑夊強鍒颁竴浜涙垜浠钩鏃朵笉娉ㄦ剰鐨勭煡璇嗙偣銆傝繖娆℃垜浠竴璧峰洖椤句竴涓嬨€傞鍏堟槸鐖跺瓙杩涚▼鐨勫唴瀹广€傝繖涓湪c/c++/python涓瘮杈冨父瑙侊紝鍦╦ava/golang涓細鏇村鐨勭洿鎺ヤ娇鐢ㄥ绾跨▼鍜屽崗绋嬨€傛瘮濡傛湰娆℃彁鍒扮殑Python涓殑os.popen()鍒涘缓瀛愯繘绋嬨€傛棦鐒舵槸瀛愯繘绋嬶紝灏卞繀椤讳笌鐖惰繘绋嬭繘琛岄€氫俊锛屼互杈惧埌鍗忓悓宸ヤ綔鐨勭洰鐨勩€傚緢瀹规槗鎯宠薄锛岀埗瀛愯繘绋嬪彲浠ラ€氳繃涓婅堪鐨勭閬擄紙鍖垮悕绠¢亾锛夎繘琛岄€氫俊銆傝繕鏄互鍒氭墠鐨凱ython绋嬪簭涓轰緥锛岃繍琛宼ask.py鍚庝細鐢熸垚涓や釜杩涚▼锛氬垎鍒繘鍏ヤ袱涓▼搴忕殑/proc/pid/fd鐩綍锛屽彲浠ョ湅鍒颁袱涓繘绋嬫墦寮€鐨勬枃浠舵弿杩扮銆傜埗杩涚▼锛氬瓙杩涚▼锛氬彲浠ョ湅鍒板瓙杩涚▼鐨勬爣鍑嗚緭鍑轰笌鐖惰繘绋嬬浉鍏宠仈锛屼篃灏辨槸popen()杩斿洖鐨勬枃浠舵弿杩扮銆傝繖閲岀殑012鍒嗗埆瀵瑰簲涓€涓繘绋嬬殑stdin锛堟爣鍑嗚緭鍏ワ級/stdout锛堟爣鍑嗚緭鍑猴級/stderr锛堟爣鍑嗛敊璇級銆傚彟澶栭渶瑕佹敞鎰忕殑鏄紝褰撴垜浠湪鐖惰繘绋嬩腑鎵撳紑鏂囦欢鎻忚堪绗︽椂锛屽瓙杩涚▼涔熶細缁ф壙锛涙瘮濡傚湪task.py涓柊澧炰竴娈典唬鐮侊細x=open("1.txt","w")鏌ョ湅鏂囦欢鎻忚堪绗﹀悗锛屼細鍙戠幇鐖跺瓙杩涚▼閮戒細鏈夎繖涓枃浠讹細浣嗘槸鍦ㄧ浉鍙嶏紝鐖惰繘绋嬩笉浼氬湪瀛愯繘绋嬩腑鎵撳紑鏂囦欢銆傝繖搴旇寰堝鏄撶悊瑙c€傛€荤粨涓€浜涘熀纭€鐭ヨ瘑鍦ㄦ帓鏌ヤ竴浜涘鎬殑闂鏃跺挨涓洪噸瑕侊紝姣斿鏈娑夊強鍒扮殑鐖跺瓙杩涚▼鐨勭閬撻€氫俊銆傛渶鍚庢€荤粨涓€涓嬶細os.popen()鍑芥暟鏄紓姝ユ墽琛岀殑銆傚鏋滈渶瑕佽幏鍙栧瓙杩涚▼鐨勮緭鍑猴紝闇€瑕佽嚜宸辫皟鐢╮ead()鍑芥暟銆傜埗瀛愯繘绋嬮€氳繃鍖垮悕绠¢亾杩涜閫氫俊銆傚綋璇荤鍏抽棴鏃讹紝鍐欑杈撳嚭鍒拌揪绠¢亾鏈€澶х紦鍐插尯鏃朵細鏀跺埌SIGPIPE淇″彿锛屼粠鑰屾姏鍑築rokenpipe寮傚父銆傚瓙杩涚▼缁ф壙鐖惰繘绋嬬殑鏂囦欢鎻忚堪绗︺€備綘鐨勭偣璧炲拰鍒嗕韩鏄鎴戞渶澶х殑鏀寔