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