我的圖書館是否有任何「官方」方式可以測試gevent monkey patching是否已被激活?我該如何測試gevent monkey patching是否活躍?
1
A
回答
3
我不知道官方的方式,但這是一種方法。
通知os.fork
變化時,它被猴子打補丁:
>>> import os
>>> os.fork
<built-in function fork>
>>> import gevent.monkey; gevent.monkey.patch_all()
>>> os.fork
<function fork at 0x100535140>
同時注意什麼gevent.fork
是:
>>> import gevent
>>> gevent.fork
<function fork at 0x100535140>
所以,當猴子修補所有(或只是OS):
>>> is_monkeypatched = gevent.fork == os.fork
1
簡短的回答是「不」(顯然,人們期望看到如果有的話,在the docs中提供的API)。
較長的答案是「大部分」,使用monkey.saved
。檢查源代碼可以看到,有效的所有常用修補程序都會更新此字典並引用原始項目,因此可以使用monkey.get_original()
來檢索它們。如果您認爲官方性需要文檔,這不是官方的,但它似乎不是作爲內部API使用的,儘管它並未以monkey.__all__
的形式出口。
如果通過你的問題你的意思是「有任何猴子修補發生?」那麼你可以測試if monkey.saved: ...
。
如果您的意思是「模塊XXX已被猴子修補?」那麼你可以測試適當的名字,例如if "threading" in monkey.saved: ...
作爲參考,在做一個monkey.patch_all()
這裏是你會看到那裏。 (請注意,patch_all()實際上並沒有打補丁的一切。它省去了子,SYS和事件在默認情況下,所以我包括他們在下面。)
>>> import os, gevent
>>> os.name, gevent.__version__
('posix', '1.0.1')
>>> from gevent import monkey
>>> monkey.patch_all(subprocess=True, sys=True, Event=True)
>>> monkey.saved.keys()
['socket', 'thread', 'ssl', 'gevent.socket', 'subprocess', 'sys', 'threading', 'time', 'os', 'select']
1
見docs。
from gevent import monkey
monkey.is_module_patched('socket')
相關問題
- 1. Yodlee測試用戶是否活躍?
- 2. Gevent monkey unpatch
- 3. class << self,alias_method和monkey patching Mechanize :: Cookie
- 4. 如何檢測Gevent的猴子修補是否處於活動狀態?
- 5. gevent monkey修補訂單
- 6. 擴展類(Monkey Patching)如何在Python中工作?
- 7. 微軟Prism是否活躍?
- 8. uNhAddIns是否足夠活躍?
- 9. 我該如何測試?
- 10. 當result.rows是[]時,我該如何測試?
- 11. 是否有可能從MonkeyRunner腳本調用Monkey測試
- 12. DWScript,Monkey Patching:在運行時添加方法或屬性
- 13. Android,如何檢測該活動是否來自其他活動?
- 14. 我該如何測試?
- 15. 我應該如何測試?
- 16. 我該如何測試pspell?
- 17. 我該如何測試ssl是否使用minitest執行?
- 18. 我該如何測試一個bean屬性是否可寫?
- 19. 我該如何測試裝配過程是否正常工作?
- 20. 試圖確定是否流是活躍的PHP
- 21. 我該如何測試我的gstreamer插件?是否有用於gstreamer插件測試的標準測試套件?
- 22. REST API在意大利是否活躍?
- 23. 在django上測試gevent-socketio
- 24. 我的活動「活躍」嗎?
- 25. Ruby + Rspec:我應該如何測試attr_accessor?
- 26. 我該如何測試DataGridViewCell的類型?
- 27. 我該如何測試/ _ah /反彈?
- 28. 我該如何測試我的Android服務是否啓動了特定的活動?
- 29. 我該如何測試這段代碼?
- 30. 我是否正確測試?