W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
用于處理多個(gè)進(jìn)程的實(shí)用程序,包括將服務(wù)器分為多個(gè)進(jìn)程和管理子進(jìn)程。
?subprocess.CalledProcessError
? 的別名。
返回此機(jī)器上的處理器數(shù)量
啟動(dòng)多個(gè)工作進(jìn)程。
如果 ?num_processes
為 None 或 <= 0,我們會(huì)檢測(cè)這臺(tái)機(jī)器上可用的內(nèi)核數(shù)量并派生該數(shù)量的子進(jìn)程。 如果給定 ?num_processes
并且 > 0,我們將fork特定數(shù)量的子進(jìn)程。
由于我們使用進(jìn)程而不是線程,因此任何服務(wù)器代碼之間都沒(méi)有共享內(nèi)存。
請(qǐng)注意,多個(gè)進(jìn)程與 ?autoreload
模塊(或 ?tornado.web.Application
? 的 ?autoreload=True
? 選項(xiàng),當(dāng) ?debug=True
? 時(shí)默認(rèn)為 ?True
?)不兼容。 當(dāng)使用多個(gè)進(jìn)程時(shí),在調(diào)用 ?fork_processes
? 之前不能創(chuàng)建或引用任何 ?IOLoop
?。
在每個(gè)子進(jìn)程中,?fork_processes
? 返回其任務(wù) ID,一個(gè)介于 0 和 ?num_processes
? 之間的數(shù)字。 異常退出的進(jìn)程(由于信號(hào)或非零退出狀態(tài))以相同的 id 重新啟動(dòng)(最多 max_restarts 次)。 在父進(jìn)程中,?fork_processes
? 在所有子進(jìn)程正常退出后調(diào)用 ?sys.exit(0)
?。
?max_restarts
默認(rèn)為 100。
可用性:?Unix
?
返回當(dāng)前任務(wù) ID(如果有)。
如果此進(jìn)程不是由 ?fork_processes
創(chuàng)建的,則返回 ?None
?。
使用 ?IOStream
包裝 ?subprocess.Popen
?。
構(gòu)造函數(shù)與 ?subprocess.Popen
? 相同,但添加了以下內(nèi)容:
?stdin
?、?stdout
和 ?stderr
可能具有值 ?tornado.process.Subprocess.STREAM
?,這將使生成的 ?Subprocess
的相應(yīng)屬性成為 ?PipeIOStream
?。 如果使用此選項(xiàng),調(diào)用者負(fù)責(zé)在完成Stream時(shí)關(guān)閉Stream。
?Subprocess.STREAM
? 選項(xiàng)以及 ?set_exit_callback
? 和 ?wait_for_exit
? 方法在 Windows 上不起作用。 因此,沒(méi)有理由在該平臺(tái)上使用此類而不是 ?subprocess.Popen
?。
在 5.0 版中更改: ?io_loop
參數(shù)(自 4.1 版以來(lái)已棄用)已被刪除。
此進(jìn)程退出時(shí)運(yùn)行回調(diào)。
回調(diào)接受一個(gè)參數(shù),即進(jìn)程的返回碼。
此方法使用 ?SIGCHLD
處理程序,這是一個(gè)全局設(shè)置,如果您有其他庫(kù)嘗試處理相同的信號(hào),則可能會(huì)發(fā)生沖突。 如果您使用多個(gè) ?IOLoop
?,則可能需要先調(diào)用 ?Subprocess.initialize
? 以指定一個(gè) ?IOLoop
? 來(lái)運(yùn)行信號(hào)處理程序。
在許多情況下,如果信號(hào)處理程序?qū)е聠?wèn)題,則可以使用 ?stdout
?或 ?stderr
Stream上的關(guān)閉回調(diào)作為退出回調(diào)的替代方法。
可用性:?Unix
?
返回一個(gè) ?Future
,它在進(jìn)程退出時(shí)解析。
用法:
ret = yield proc.wait_for_exit()
這是 ?set_exit_callback
?協(xié)程的替代方案(以及阻塞 ?subprocess.Popen.wait
? 的替代方案)。
默認(rèn)情況下,如果進(jìn)程具有非零退出狀態(tài),則引發(fā) ?subprocess.CalledProcessError
?。 使用 ?wait_for_exit(raise_error=False)
? 抑制此行為并返回退出狀態(tài)而不引發(fā)。
4.2 版中的新功能。
可用性:?Unix
?
初始化 ?SIGCHLD
處理程序。
信號(hào)處理程序在 ?IOLoop
上運(yùn)行以避免鎖定問(wèn)題。 請(qǐng)注意,用于信號(hào)處理的 ?IOLoop
不必與各個(gè) ?Subprocess
對(duì)象使用的相同(只要 ?IOLoop
都在單獨(dú)的線程中運(yùn)行)。
在 5.0 版中更改: ?io_loop
參數(shù)(自 4.1 版以來(lái)已棄用)已被刪除。
可用性:?Unix
?
刪除 ?SIGCHLD
?處理程序。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: