python有没有类似unity3d_像web一样使用python
使用傳統的web開發技術,也就是html+js,然后搭配一個后端語言,已經成為當今web開發的固定模式了,為此也形成了眾多的toolkit,譬如ror,django,各種js圖形庫更是玲瑯滿目,從非常大程度上也加速了開發過程.但傳統web應用也非常自然地有一些詬病,有些特殊效果,c端能夠輕而易舉地完畢,但b端就會非常糾結了,從根本上講,這是由于html這樣的語言是內容驅動行為的服務模式,導致js沒有狀態保留的功能,這在我和我的同事使用webkit結合html+js來搭建一個hybrid應用的時候讓我深有體會.后來在進行一些類似tableview的內容展示的時候,已經全然hold不住了,在c端里面最普通的mvc模式就能夠解決的問題,在b端里面得用js來做異步數據分段請求,還有非常多坑爹的東西已經不記得了,后來經過幾天的評估,還是決定推倒重來,我們之所以要用web來做ui,或者說一些簡單的邏輯,主要是我們既須要高的實時內容分發也須要高的開發效率,畢竟這些都是一個走流程的東西,用c/c++來做太大材小用了.我們團隊一直是用的python來做這些以上的工作,但這次沒實用,由于我們不想開放原始碼(別提pyc什么的,跟原始碼有多大差別?),二個內容的實時分發能力跟不上,就好比我們須要給用戶展示一個類似站點一樣的應用,我們希望用戶能夠實時的得到我們最新的軟體功能的推送.想了非常久,終于得出一個結論:我們須要像html+js一樣使用python,那就一切問題都迎刃而解了.
故事從python的import機制說開去,閱讀了(python import system)https://docs.python.org/3.5/reference/import.html和相關的pep之后,認為這個做法可行,然后就實現了一個能夠導入網絡包的機制,比方有一個py放在我們website的rs.sysfix.cn/demo/pong.py,那例如以下導入就可以:import
rs.sysfix.cn.demo.pong as pong,之后的使用就和普通的py一模一樣了,當然,這樣還不夠,假設別人直接訪問這個url,就能夠得到原始碼了,再加一點東西,我們用aes把代碼給跑一遍之后再放到server上,然后本地的import機制中解密之后再運行,當然,實際上我們還壓縮了,畢竟網絡io比cpu資源更寶貴.這個import的機制使用一個py實現的,他必須是在應用軟件本地可接觸到的,意思就是假設用戶刻意去留意這個腳本,然后順藤摸瓜,那我們的工作還是白做了,好,讓我們再瘋狂一點,用c來實現這個import的機制,這樣本地僅僅須要加載這個c的dll或者其它你喜歡的方式,就能夠擁有一個能夠加載自己server上壓縮加密的py包的執.行環境了.到了c的世界,那保護起來就有無窮無盡的想象了,加殼,花指令......
可能咱們說得不是太清楚,有同學不太明確這樣做的意義,這個web的方式和傳統的web2py等是不同的,這些py代碼是在client運行的,server僅僅是提供一個腳本的地方,就像js一樣,但他跟js又不一樣,他是一個純粹的python環境,你能夠通過ctype調用dll和系統api,通過urllib發起http連接,使用pyqt搭建native ui,使用numpy做數值計算,用pygame編寫游戲.
我們下一步的計劃是開發一個擁有這樣的機制的瀏覽器,它不僅能夠訪問傳統的html站點,使用這樣的機制搭建的py站點也能夠訪問,應該是非常有趣的,到時候項目會發起在github,敬請關注.
由于近期項目繁忙,代碼等有空整理出來開放以饗讀者.以上機制能夠參考我們團隊的這個產品看到這個技術的成果:http://www.sysfix.cn/windowschanpin/shujuhuifu/gaoqingshipinleihuifu/2014/0106/567.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python有没有类似unity3d_像web一样使用python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: e5cc温控仪通讯参数设定_自动化工程师
- 下一篇: python如何写一个图片进去_pyth