Python中的子進程調用是否掛起?也就是說,子進程調用是否與其他Python代碼在同一線程中運行,還是它是非阻塞模型?在這個問題上,我找不到任何文件或SO。謝謝!Python子進程調用掛起?
1
A
回答
3
subprocess
模塊中的大多數方法都是阻塞的,這意味着它們希望子流程在返回之前完成。但是,subprocess.Popen
是非阻塞的。
result = subprocess.call(cmd) # This will block until cmd is complete
p = subprocess.Popen(cmd) # This will return a Popen object right away
一旦有Popen
對象,你可以使用poll
實例方法,看看子進程是完全沒有阻擋。
if p.poll() is None: # Make sure you check against None, since it could return 0 when the process is complete.
print "Process is still running"
2
子流程在後臺運行。在subprocess模塊中,有一個名爲Popen的類在後臺啓動一個進程。它有一個wait()方法可以用來等待進程完成。它還有一個通信()輔助方法,它將處理stdin/stdout/stderr加上等待進程完成。它還具有諸如call()和check_call()之類的便利功能,可以創建Popen對象,然後等待它完成。
因此,子進程實現了一個非阻塞模型,但也給你阻塞幫助函數。
相關問題
- 1. Python的子進程調用掛起
- 2. Python子進程.Popen掛起
- 3. 調用通過ssh創建子進程的Python腳本掛起
- 4. Python子進程通信掛起
- 5. Python子進程如何確定子進程是否掛起?
- 6. python:調用運行後臺進程的腳本的子進程掛起
- 7. Gulp子進程掛起
- 8. 掛起的進程,調試
- 9. 父進程在調用waitpid後掛起
- 10. Python子進程調用rsync
- 11. python子進程調用
- 12. SDL_SetVideoMode掛起進程
- 13. Linux:fork&execv,等待子進程掛起
- 14. 子進程readline掛起等待EOF
- 15. 內核調試掛起進程?
- 16. Python子進程readline在讀取所有輸入後掛起()
- 17. 如果嘗試讀取其輸出,Python子進程會掛起
- 18. 當stderr被傳送時,python子進程掛起
- 19. 通過python多處理啓動子進程掛起
- 20. Python多處理:如果父進程被終止,子進程是否會掛起?
- 21. Python守護進程檢查進程是否在Linux中掛起
- 22. perl父進程掛起等待子進程讀取stdin
- 23. 檢測子進程是否掛起父進程
- 24. 已完成子進程但父進程掛起
- 25. 程序在使用進程時掛起
- 26. 創建子進程時GTK應用程序掛起
- 27. 進程掛起在父進程中C
- 28. 爲Linux進程掛起問題調試實用程序?
- 29. Python的getpass.getpass()函數調用掛起
- 30. 調用Windows上的Python掛起
你指的是哪個子過程函數? – tdelaney
例如'subprocess.call([「./ myOtherScript」])' – goodcow