我想運行一個方法,它有一個無限循環來創建視頻顯示。此方法在另一個處理硬件輸入的循環中調用,因此無法像視頻一樣快速循環,如果使用外部循環運行視頻,會導致延遲。有沒有辦法啓動視頻循環,然後啓動硬件循環並分別運行它們?目前,如果我打電話給視頻循環,它只是坐在那個循環,直到它返回。一次在Python中運行多種方法
回答
是的,你可以使用Python自己的threading模塊,或者像gevent這樣的協作微線程模塊。
需要注意的是Python的線程機制進行本免責聲明的CPython的(在大多數框的默認Python實現):
由於全局解釋器鎖,在CPython的只有一個線程可以執行Python代碼一次(甚至儘管某些面向性能的庫可能會克服這個限制)。如果您希望您的應用程序更好地利用多核計算機的計算資源,建議您使用
multiprocessing
。但是,如果要同時運行多個I/O限制任務,線程仍然是一個合適的模型。
根據您所調用的底層模塊如何操作,您可能會發現在使用threading
時,如果有的話,一個線程不會經常放棄控制。在這種情況下,使用協同微線程可能是您唯一的選擇。
是的,你可以使用Python自己的multiprocessing模塊。
請注意,多處理不需要與GIL作鬥爭,並且可以同時處理所有你需要的事情。
另一方面,多處理模塊有一個警告,當你產生一個進程時,它是一個完全獨立的python解釋器。所以它不只是一個OS控制的線程。這本身就是一個完全不同的過程。這可能會增加程序的開銷,但完全避開GIL的優勢使得這只是一個溫和的問題。
是的,這也可以工作。但值得注意的是,你必須使用的通信機制變成跨進程而不是跨進程,因此不像共享對象那麼簡單,因爲每個進程都有自己的堆。 – cdhowie
- 1. 在另一種方法中運行一個方法。 python
- 2. Java多線程一次運行多種方法的最簡單方法?
- 3. 在Python中多次並行運行類方法
- 4. 在Angularjs中只運行一次方法
- 5. 從另一種方法運行方法
- 6. 是否有一種簡單的方法在循環/重複運行方法中只賦值一次(第一次)?
- 7. 每種方法應該運行多少種測試方法?
- 8. 無法多次運行方法
- 9. 保持一種方法不斷運行,另一種方法每隔一段時間執行一次
- 10. 在Rails中運行另一種方法之前調用方法
- 11. 一種方法調用方法一次
- 12. 一次運行多個.exe文件python
- 13. 硒多次運行同樣的方法
- 14. Android:在運行時多次檢查另一個類的方法
- 15. 一種在python中排序的方法
- 16. 在Python中調用另一種方法
- 17. 因爲這種方法正在運行兩次
- 18. 如何在時間延遲上依次運行兩種方法?
- 19. 在一次交易中執行ActiveRecords的兩種不同方法
- 20. 在Python中定義類方法的多種方法?
- 21. PHP方法只能運行一次[SQL]
- 22. Junit - 運行設置方法一次
- 23. in_array方法只運行一次?
- 24. 有沒有一種方法可以運行多個IntentService?
- 25. 有沒有一種方法可以在運行一次後自動重新運行一個exe文件
- 26. Python Zen - (只)一種方法
- 27. 阻止另一種方法由於另一種方法的返回而運行?
- 28. 'System.Windows.Application'無法多次運行
- 29. Python:一種方法裏面的方法
- 30. Python:在類方法中運行線程
對不起,我不得不撕下你的第一行:D –