-2
A
回答
1
最好是使用線程處理長時間運行的網絡(套接字)操作。如果您在主線程中完成任何活動(或從套接字接收輸入之後),這將特別有用。
發電機一般不用於網絡運行。
0
如果在處理接收數據的一部分的同時嘗試接收更多數據,則需要多線程。這與yield沒有任何關係,因爲在等待數據被接收的同時,yielding仍然會阻止您的同時處理。
2
這兩個工作。兩者都有他們的問題。
大衛比茲利很好地談到雙方的問題,並說明了它在這個PYCON 2015年的談話視頻: https://www.youtube.com/watch?v=MCs5OvhV9S4
簡短的總結是怎麼樣的:
- 您可以使用兩臺發電機/協同例程或線程或多處理來完成您的工作
- 如果有任何事情涉及純Python中的硬計算工作(像numpy這樣的C-Extension可以避免這種情況),那麼Python GIL會咬合你的協同例程/線程。
- 只要你主要做I/O,這並不重要。如果工作量較大,則線程效果會更好,如果您的塊較小,則協調程序的效果會更好。如果您使用游泳池,例如從期貨模塊中,您可以調整並改變行爲。
很難說一般情況下效果最好,完全取決於您的工作量。
相關問題
- 1. 與發電機
- 2. 與發電機
- 3. Python與發電機的無限遞歸
- 4. 發電機線程安全嗎?
- 5. 離線lorem ipsum發電機
- 6. 在Python,從發電機
- 7. 發電機在Python查詢
- 8. Python的發電機行爲
- 9. 的Python的發電機躍
- 10. 修改與GWT發電機
- 11. 發電機設計與Java
- 12. Angularjs4與快遞發電機
- 13. 行發電機與textviews
- 14. 發電機功能與pymongo
- 15. SQLAlchemy的exectutemany與發電機
- 16. 使用與發電機
- 17. 無法與發電機pyresttest
- 18. 與PHP相比,Python進程,線程與虛擬主機相比
- 19. Python中的線程與發送到線程的參數
- 20. Python MP3Play與線程
- 21. 球在線判斷素髮電機
- 22. 路線,寶石和發電機
- 23. 在線Lorem存有發電機
- 24. 蟒蛇發電機的發電機?
- 25. 從發電機調用發電機
- 26. 發電機,推遲到子發電機
- 27. python線程,多線程與threading.thread
- 28. Python中的線程與線程模塊
- 29. 多線程PHP與多線程Python
- 30. 環路由n個元素與發電機在Python
謝謝你的答案。看大衛腳本是太棒了。 – arj