当前位置:首页 » 编程语言 » python引擎

python引擎

发布时间: 2022-06-12 19:23:52

‘壹’ 用python制作一个搜索引擎

可能帮不上忙。但别的语言有现成的。用java 的 solr做搜索,索引,分词。只需要配置xml,不用写代码。然后加上前端页面搜索就完成了。用python的scrapy可以做爬虫。你的需求我感觉简单做,都不需要索引,直接查数据库。模糊查询还有一个java的nutch,几乎不用写代码,直接爬虫+索引+界面 一套都实现好了,什么高亮,快照都有,直接用。不知道你能出多少钱?

‘贰’ python有什么做游戏引擎的包吗

python的pygame包就可以用了做游戏引擎

‘叁’ 除了Pygame外,还有哪些适合Python的游戏引擎

2d 用 pygame
3d 用 panda3d
cocos2d,这个一开始就是python的,现在iphone的版本造就了很多游戏

‘肆’ 在Python环境下比较好的工作流引擎是什么

CSDN:FixFlow 和类似的软件如 Activiti jBPM 等相比起来,它们之间有哪些区别呢?

FFDT:FixFlow 更加符合中国国情,支持复杂任务流转,如转发、退回、自由跳转、会签等处理,可以大大减少二次开发工作量。它还提供更加友好的设计器界面,可视化的连接器,还有中文的社区支持和有开发人员参与的技术交流群。

由于开源时间不长,FixFlow 的文档没有其他产品那么齐全,网上的相关技术文章比较少,现在还都是依靠团队成员在写,社区用户量也相对较少,但是增长非常快。

CSDN:工作流引擎是一门横向的科学,应用非常广泛。那么,请介绍一下FixFlow 的产品都遍布在哪些应用领域!

FFDT:我们耳熟能详的不外乎OA、综合办公管理,ERP,更细一些的包括:报销、请销假、员工入职离职等,然而从我们多年实施的项目经验来看,各行各业都需要工作流,其原因是由于行业的工作趋于标准化,而标准化的工作需要通过符合企业自身环境的步骤来执行。每个企业的环境不同,操作方式也差别迥异,不可能用唯一的行业标准来规范企业运作过程中的所有步骤。所以在这样的一种现状下,工作流引擎的专业能力与灵活性的价值就体现出来了。

‘伍’ 毕业设计中怎样用python写一个搜索引擎的分

1、 网络连接需要持续连接(persistent connection),DNS解析的瓶颈(先查本地DNS缓存

实现方法:基于python httplib(对http1.1完成对持续连接的支持(python的httplib完全支持http1.1),如果不是http1.1那么可以使用urlopen对其进行一次连接)并对其socket对象进行控制,关键是加入对读取DNS本地缓存(在我的机制下这个根本就不是主要问题可以暂时忽略),以及有settimeout(Igloo)(搞定,就用setdefaulttimeout())的支持(或者利用自己的DNS服务器,进行优化处理),以及对sock对象的settimeout进行设置,防止长时间的等待一个有可能连接不上的web服务器.(要测试一下连接模块和DNS解析模块在访问不存在url在默认情况下的时间消耗)对站点的ip解析出来后就直接用ip进行连接而避免了重复调用DNS解析.例子:socket.gethostbyname("www.163.com")

网络连接下载模块非常重要,需要精心反复测试,因为有可能碰到一些不规范的web服务器,如果没有加以考虑会使整个线程崩溃。

2、 多线程:机器任务的分配及站点任务的分配。

实现方法:(在某台机器上实现,在对本机内存cpu的消耗情况判断后对机器任务进行分配;在对和站点的连接情况进行判断后对站点任务进行分配)
机器任务的分配:对于机器负担的情况调整在一个机器开的线程的个数。(在关闭线程时注意要先让线程完成当前运行任务)
站点任务的分配:就是某个机器对一个站点开的线程的个数的分配。(同样是要注意关闭线程时先让其完成当前任务)

3、 对web文件树遍历过程更好的控制,对web文件树在广度优先遍历时层次的判断。(整个网络是一个图,而某个站点的模型更接近于一棵树)

实现方法:在每个地址进入队列时加一个层次号,那么要遍历第n层的话那么遍历到第一个n+1就停止读取。

4、 利用robotparser解析robots.txt

5、 单个机器spider的作用:

a) 同2多线程3文件树的遍历

b) 将获取的外部url发回中央控制器,并从中央控制器取回新的外部url。

6、 中央控制器的作用:

a) 观察各机器的状态包括:cpu、内存、线程、站点、网络流量
b) 观察对外整体网络流量和连接状况,可以根据网络状况来调节timeout。

c) 接受各个机器发送过来的外部url并对每个url的重复数字计数。然后分配到各个机器。(分配时要用爬行策略控制器对外部url进行排序来分配,Igloo利用Page Rank,我们可以使用最简单的重复越多重要系数就越高来进行排序)

d) 分布式URL分配算法:Igloo1.2的二级哈希映射算法(集中式分配算法那个中央控制器容易成为系统瓶颈)复习哈希算法,还有就是对url是否访问过的判断(Igloo使用的是URL Trie滞后合并策略)。可以使用Berkeley DB作为URL Trie的替代品。两种实现方式的比较:

i. 现在的想法:(面向站点,信息颗粒大)外部链接只是保存主机名比如:www.163.com, 站内访问用解析好的ip地址维持连接,用相对链接来得到各个页面,这样就要维护一个外部链接列表,几个站点的链接列表。优点:节省内存,对某个站点的信息获取全面,对站点的出现频率统计,排序,重要站点先取。 缺点:对链接的获取的全面性得不到保证,而且不能获取更多的重要页面,每个站点的重要页面也不会很多。
ii. 老方案:(面向页面,信息颗粒小)所有连接一视同仁。缺点:浪费资源,对单一站点的获取不一定全面。优点:可以得到全面的链接图,可以使用Page Rank对列表进行排序,页面更重要就在最前面。

7、 解析html(超级链接的提取)搞定(用python的sgmllib)缺点:速度太慢(可能会造成瓶颈,要好好包装好,以后有机会换掉它)

‘陆’ 用Python编程需要哪些软件

一、终端:Upterm:简略好用,是一个全渠道终端,能够说是终端里的IDE,有着强壮的自动补全功能。
二、交互式解说器:PtPython:支持语法高亮、提示乃至是Vim和emacs的键入模式。
三、包管理:Anaconda:能帮你装置好许多麻烦的软件,包括:Python环境、pip包管理东西、常用的库、配置好环境路径等。用Python高数据方面的工作,就装置Anaconda,它乃至开发了一套JIT的解说器Numba。
四、脚本引擎:QPython:QPython是一个能够在安卓体系上运行Python脚本引擎,整合了Python解说器、Console、编辑器和SL4A库,在安卓设备上你照样可以玩转Python。
五、编辑器:Sublime3:配合装置Anaconda或Codelntel插件,就能够让Sublime具有近乎IDE的体会。
六、IPython:一个根据Python shell的交互式解说器。它的自动补全非常好用,乃至用了它之后,很多程序员小伙伴们就不想再用自带的Python shell啦。

‘柒’ Python 实现一个大数据搜索引擎需要多少行代码

十几万行吧

‘捌’ Python 有那么神吗

很多对Python不熟悉的人,认为Python在最近这些年的兴起是运气而已。本文帮助大家回顾一下过去十几年Python的3次增长和对应的历史背景。

Python设计之处的特点,包括易学易用,以及作为胶水语言。易学易用是个难以量化的东西,但至少我接触的绝大多数朋友都认同Python在学习和使用上是比大部分语言简单的。有些人不认同Python通常也不是认为Python相对其他语言难学,而是认为Python的运行速度慢,或者动态类型语言的通病。至于胶水语言就比较窄了,面向作为胶水而设计的语言是很少的,印象里只有Lua算得上一个。另一个Python相较其他语言的优势是字符串处理。

以下介绍Python获得发展的3次机遇期。

2006年的搜索/NLP:2006年前后正好是搜索引擎公司发展的爆发期。那一年Google中国李开复搞了关门弟子计划,网络也做了诸多广告,比如网络更懂中文系列。在那个时代搜索引擎就是IT行业的高科技。之后不久,阿里巴巴也搞了个ASC(阿里巴巴搜索技术研究中心),后来多次追潮流更名,一直作为阿里巴巴内部的前沿研发部门。

而Python用作搜索引擎和NLP是很有历史的。早期Google在90年代开发搜索引擎爬虫就是使用Python实现的。而即便是现在,开发爬虫,Python也基本上就是第一选择。很多人学习Python的入门程序也是爬虫。而Python适合开发爬虫的关键在于Python的字符串处理是很方便的。

也就是从2006年末开始,国内的python-cn邮件列表涌入了大量的新人,并以爬虫为例开始深入学习Python。

2010年的WEB创业潮:2010年开始,国内外出现了新一轮的创业潮,大家开发的是各种各样的网站。此时的WEB开发上,Python已经逐步成为主流WEB服务器开发选项中的一种。相对于同时代的Java和PHP等,有着开发效率上的优势。

正因为早期创业公司需要迅速的迭代和试错,使得这个时代的Python成为了一个不错的选项。进而让更多工程师开始学习起来Python。

也就是从这个时期开始,才逐渐有较多的公司会公开招聘Python工程师。在此前招聘Python工程师的广告是非常非常少见的。

2014年的Deep Learning:从2014年开始火起来的深度学习上,Python的优势是近乎绝对的。深度学习的主流开发语言只有C++和Python两种了,其他语言可以认为根本就没能在这里分到什么像样的空间。所有主流的Deep Learning框架,也是官方直接提供了C++和Python两种接口。而由于C++开发的难度,当前确实有不少从业工程师是直接用Python搞定深度学习的相关步骤。

这次Python的增长期被更多不了解Python的人认为是Python的狗屎运。但其背后的逻辑反倒是非常坚固的。原因就是Python是个很好的胶水。最初的起点是numpy库。

numpy是封装了BLAS的科学计算库。BLAS是对CPU向量指令集高度优化的数学运算库。通过BLAS进行科学计算可以得到顶级的计算性能,这个计算性能比未经向量指令集优化的C程序还能快上数倍。而numpy的另一个重要特点就是,把buffer做了封装,使得buffer的内容是无需Python处理的,而是实际交给特定的软件库来处理,numpy只是负责维护该buffer的生命周期,形状等元数据。这就使得numpy的计算性能不会受到Python的影响,但同时却可以利用Python的易学易用来管理buffer的生命周期。

numpy对buffer的管理带来的易用性优势在后来得到了很大的发展。如以下几点:

  • OpenCV:在opencv-python中就是使用了numpy.array来管理图像数据,却没有像C++接口一样使用Mat。同样的顶级性能。

  • PyCuda/PyOpenCL:也是利用了numpy.array来透明传递数据给GPU做高性能计算。尤其是集成了JIT,使得可以用字符串的方式传递kernel function,不再像C++一样要独立编译一遍。

  • Caffe/TensorFlow:同样利用了numpy.array,并利用了PyCuda/PyOpenCL的集成。

  • 所以这样一路发现下来,由Python是个好胶水,就真的把若干很好用的库全流程的粘在了一起。在流程集成上都是顶级的性能,而没有Python的性能损耗,同时带来了非常好的易用性。

    相比其他语言,对这些C/C++库的玩法都是先封装一层对象,包准封装的前后对不上。而且因为大部分语言并不是面向胶水设计,开发C接口都很困难。自然与这些高性能计算库的结合困难重重。累计起来就与Python产生了差距。

    题主所提到的R语言,是一种领域相关的语言,是做统计领域的,类似的还有做科学计算的Matlab。如果程序的输出只是一份报告,甚至一份统计图,问题是不大的。但想要成为产品,与其他系统集成则成了难题。一般的服务器部署产品,是不会选择在工程上这么不专业的语言。所以,实际应用时,还是要有工程师负责将算法提取出来,移植到产品级的语言和平台上。举个例子,R虽然可以正常的访问Mysql数据库之类的。但产品级系统中,涉及到memcache、kafka、etcd等,可就没有R语言的接口了。所以这些领域相关语言,写一些自己电脑上跑的小程序还可以,进入产品是没什么希望了。

    再者就是因为通用性一直难以跨越出自己的领域,所以这类语言的生命周期一般都不太长,失去自己领域的强支撑后会很快消亡。所以建议题主还是花一些精力去看看业界通用的一些语言。

‘玖’ 除了Pygame外,还有哪些适合Python的游戏引擎

如果游戏的中心是一个逻辑,比如战斗类型的,牵扯到拓扑人物,以及人物数据,环境数据。
然后就是其中的算法
游戏还得有个故事。当然主要看你的目的。
其次还有些配音。文字。之类的。
理论上pygame不能做rpg这种货色,如果对画质要求高的 话。
黑白棋五子棋。这也是游戏啊。主要是逻辑。和规则。

‘拾’ 如何用Python爬取搜索引擎的结果

我选取的是爬取网络知道的html 作为我的搜索源数据,目前先打算做网页标题的搜索,选用了 Python 的 scrapy 库来对网页进行爬取,爬取网页的标题,url,以及html,用sqlist3来对爬取的数据源进行管理。
爬取的过程是一个深度优先的过程,设定四个起始 url ,然后维护一个数据库,数据库中有两个表,一个 infoLib,其中存储了爬取的主要信息:标题,url ,html;另一个表为urlLib,存储已经爬取的url,是一个辅助表,在我们爬取每个网页前,需要先判断该网页是否已爬过(是否存在urlLib中)。在数据存储的过程中,使用了SQL的少量语法,由于我之前学过 MySQL ,这块处理起来比较驾轻就熟。
深度优先的网页爬取方案是:给定初始 url,爬取这个网页中所有 url,继续对网页中的 url 递归爬取。代码逐段解析在下面,方便自己以后回顾。
1.建一个 scrapy 工程:
关于建工程,可以参看这个scrapy入门教程,通过运行:

[python] view plain
scrapy startproject ***

在当前目录下建一个scrapy 的项目,然后在 spiders 的子目录下建立一个 .py文件,该文件即是爬虫的主要文件,注意:其中该文件的名字不能与该工程的名字相同,否则,之后调用跑这个爬虫的时候将会出现错误,见ImportError。
2.具体写.py文件:

[python] view plain
import scrapy
from scrapy import Request
import sqlite3

class rsSpider(scrapy.spiders.Spider): #该类继承自 scrapy 中的 spider
name = "" #将该爬虫命名为 “知道”,在执行爬虫时对应指令将为: scrapy crawl
#download_delay = 1 #只是用于控制爬虫速度的,1s/次,可以用来对付反爬虫
allowed_domains = ["..com"] #允许爬取的作用域
url_first = 'http://..com/question/' #用于之后解析域名用的短字符串
start_urls = ["http://..com/question/647795152324593805.html", #python
"http://..com/question/23976256.html", #database
"http://..com/question/336615223.html", #C++
"http://..com/question/251232779.html", #operator system
"http://..com/question/137965104.html" #Unix programing
] #定义初始的 url ,有五类知道起始网页

#add database
connDataBase = sqlite3.connect(".db") #连接到数据库“.db”
cDataBase = connDataBase.cursor() #设置定位指针
cDataBase.execute('''''CREATE TABLE IF NOT EXISTS infoLib
(id INTEGER PRIMARY KEY AUTOINCREMENT,name text,url text,html text)''')
#通过定位指针操作数据库,若.db中 infoLib表不存在,则建立该表,其中主键是自增的 id(用于引擎的docId),下一列是文章的标题,然后是url,最后是html

#url dataBase
cDataBase.execute('''''CREATE TABLE IF NOT EXISTS urlLib
(url text PRIMARY KEY)''')
#通过定位指针操作数据库,若.db中urlLib表不存在,则建立该表,其中只存了 url,保存已经爬过的url,之所以再建一个表,是猜测表的主键应该使用哈希表存储的,查询速度较快,此处其实也可以用一个外键将两个表关联起来

2. .py文件中的parse函数:

.py文件中的parse函数将具体处理url返回的 response,进行解析,具体代码中说明:

[python] view plain
def parse(self,response):
pageName = response.xpath('//title/text()').extract()[0] #解析爬取网页中的名称
pageUrl = response.xpath("//head/link").re('href="(.*?)"')[0] #解析爬取网页的 url,并不是直接使用函数获取,那样会夹杂乱码
pageHtml = response.xpath("//html").extract()[0] #获取网页html

# judge whether pageUrl in cUrl
if pageUrl in self.start_urls:
#若当前url 是 start_url 中以一员。进行该判断的原因是,我们对重复的 start_url 中的网址将仍然进行爬取,而对非 start_url 中的曾经爬过的网页将不再爬取
self.cDataBase.execute('SELECT * FROM urlLib WHERE url = (?)',(pageUrl,))
lines = self.cDataBase.fetchall()
if len(lines): #若当前Url已经爬过
pass #则不再在数据库中添加信息,只是由其为跟继续往下爬
else: #否则,将信息爬入数据库
self.cDataBase.execute('INSERT INTO urlLib (url) VALUES (?)',(pageUrl,))
self.cDataBase.execute("INSERT INTO infoLib (name,url,html) VALUES (?,?,?)",(pageName,pageUrl,pageHtml))
else: #此时进入的非 url 网页一定是没有爬取过的(因为深入start_url之后的网页都会先进行判断,在爬取,在下面的for循环中判断)
self.cDataBase.execute('INSERT INTO urlLib (url) VALUES (?)',(pageUrl,))
self.cDataBase.execute("INSERT INTO infoLib (name,url,html) VALUES (?,?,?)",(pageName,pageUrl,pageHtml))

self.connDataBase.commit() #保存数据库的更新

print "-----------------------------------------------" #输出提示信息,没啥用

for sel in response.xpath('//ul/li/a').re('href="(/question/.*?.html)'): #抓出所有该网页的延伸网页,进行判断并对未爬过的网页进行爬取
sel = "http://..com" + sel #解析出延伸网页的url
self.cDataBase.execute('SELECT * FROM urlLib WHERE url = (?)',(sel,)) #判断该网页是否已在数据库中
lines = self.cDataBase.fetchall()
if len(lines) == 0: #若不在,则对其继续进行爬取
yield Request(url = sel, callback=self.parse)

热点内容
碧蓝航线pc挂机脚本 发布:2024-05-19 02:30:03 浏览:588
脚本fir 发布:2024-05-19 02:28:57 浏览:260
阿里云独享服务器 发布:2024-05-19 02:23:54 浏览:253
织梦源码ga 发布:2024-05-19 02:23:20 浏览:571
java文件名后缀 发布:2024-05-19 02:14:39 浏览:956
快手点榜脚本 发布:2024-05-19 02:08:44 浏览:163
pythonforinkeys 发布:2024-05-19 01:55:44 浏览:793
电脑如何局域网共享文件夹 发布:2024-05-19 01:25:01 浏览:69
手机存储越大性能越好吗 发布:2024-05-19 01:14:28 浏览:177
我的世界hyp服务器怎么玩 发布:2024-05-19 00:51:25 浏览:801