怎样全面的使用GOOGLE
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样全面的使用GOOGLE相关的知识,希望对你有一定的参考价值。
参考技术A 分类: 生活 >> 交通出行解析:
简介
Google 使用一组独特的高级硬件和软件,您所体验到的搜索速度一方面归功于我们高效的搜索算法,另一方面则归功于我们将数以千计的低成本计算机联网到一起,制造出了一部超高速搜索引擎。
我们的核心软件称为 PageRank(TM),这是由我们的创始人 Larry Page 和 Sergey Brin 在斯坦福大学开发出的一套用于网页评级的系统。虽然我们每天有很多工程师负责全面改进 Google 系统,但是,我们仍把网页级别作为所有网络搜索工具的基础。
浅谈网页级别
作为组织管理工具,网页级别利用了互联网独特的民主特性及其巨大的链接结构。实质上,当从网页 A 链接到网页 B 时,Google 就认为“网页 A 投了网页 B 一票”。Google 根据网页的得票数评定其重要性。然而,除了考虑网页得票数(即链接)的纯数量之外,Google 还要分析投票的网页。“重要”的网页所投出的票就会有更高的权重,并且有助于提高其它网页的“重要性”。
重要的、高质量的网页会获得较高的网页级别。Google 在排列其搜索结果时,都会考虑每个网页的级别。当然,如果不能满足您的查询要求,网页级别再高对您来说也毫无意义。因此,Google 将网页级别与完善的文本匹配技术结合在一起,为您找到最重要、最有用的网页。Google 所关注的远不只是关键词在网页上出现的次数,它还对该网页的内容(以及该网页所链接的内容)进行全面检查,从而确定该网页是否满足您的查询要求。
客观公正
Google 以其复杂而全自动的搜索方法排除了任何人为因素对搜索结果的影响。虽然我们也在搜索结果旁刊登相关广告,但没人能花钱买到更高的网页级别,从而保证了网页排名的客观公正。作为您的忠实助手,Google 可以方便、诚实、客观地帮您在网上找到有价值的资料。
为何选用 Google
因为 Google 搜索既快又好!网上信息浩如烟海,获取有用的信息难于大海捞针。所以需要一种优异的搜索服务,将网上繁杂的内容整理成为可随心使用的信息。如果缺乏强有力的搜索工具,那么想在网络上寻找一个特定网站,其难度将如在一个没有卡片目录、藏书方法完全随机的图书馆内寻找一本书一样。
Google 使网络井然有序
Google 依据网络自身结构,清理混沌信息,缜密组织资源。Google 的搜索服务既不是简单的信息目录,也不是变相的商业广告。
80 亿网址供您搜索
Google 目录中收录了 80 亿多个网址,这在同类搜索引擎中是首屈一指的。这些网站的内容涉猎广泛,无所不有。
Google 只返回包含所有关键词的网页
与大多数其它搜索引擎的区别在于:Google 只显示相关的网页,其正文或指向它的链接包含您所输入的所有关键词,而无须再受其它无关结果的烦扰。
Google 遵从关键词的相对位置
Google 不仅能搜索出包含所有关键词的结果,并且还对网页关键词的接近度进行分析。与大多数其它搜索引擎的又一区别是:Google 按照关键词的接近度确定搜索结果的先后次序,优先考虑关键词较为接近的结果,这样可以为您节省时间,而无须在无关的结果中徘徊。
Google 摘要萃取精华
不同于那些老生常谈的网站简介,Google 只摘录那些包含您的搜索关键词的内容。这样,您就不必为打开网页之后才发现它根本不相关而沮丧。
Google 为您带来好手气!
Google 最擅长于为常见查询找出最准确的搜索结果。我们极力向您推荐“手气不错(tm)” 按钮,它会直接带您进入最符合搜索条件的网站,省时又方便。
Google 储存网页快照
Google 储存网页的快照,当存有网页的服务器暂时出现故障时您仍可浏览该网页的内容。如果找不到服务器,Google 储存的网页快照也可救急。虽然网页快照中的信息可能不是最新的,但在网页快照中查找资料要比在实际网页中快得多。
我怎样才能使用 Python 从 Google Pub/Sub 中以足够快的速度阅读
【中文标题】我怎样才能使用 Python 从 Google Pub/Sub 中以足够快的速度阅读【英文标题】:How could I read fast enough from Google Pub/Sub using Python 【发布时间】:2020-05-04 14:55:13 【问题描述】:我正在尝试从实时公共 projects/pubsub-public-data/topics/taxirides-realtime 流中读取消息,但我处理数据的速度似乎不够快,或者存在确认问题。 “未确认的消息计数”不断增加我正在做的任何事情(即使我在运行代码之前清除了消息)。我尝试在我的家用 Windows 10 PC、基于 GCP 的 Ubuntu VM 和 GCP 控制台终端上运行相同的代码,结果相同。
附加信息:在我的一个 GCP 项目中,我为公共项目/pubsub-public-data/topics/taxirides-realtime PubSub 主题和我的应用程序创建了一个订阅“taxi-ride-client”。消息正在到达我的程序,但处理缓慢或不正确。
是我做错了什么,还是 Python 太慢了?这是我的代码:
import os
from google.cloud import pubsub_v1
def callback(message):
''' Processing PubSub messages '''
message.ack()
if __name__ == '__main__':
project_name = '<projectname>'
credfile = '<credfilename>.json'
subscription_name = 'taxi-ride-client'
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = credfile
subscriber = pubsub_v1.SubscriberClient()
subscription = subscriber.subscription_path(project_name, subscription_name)
subscr_future = subscriber.subscribe(subscription, callback=callback)
print('Listening for messages via: '.format(subscription))
try:
subscr_future.result(timeout=600) # running for 10 minutes
except Exception as ex:
subscr_future.cancel()
print('\nNormal program termination.\n')
流每小时产生大约 8 到 1000 万条记录,其中不到 0.5% 与我的回调中的 IF 条件匹配。无论如何,我还尝试了一个只包含确认行的完全空的回调。
我还以 5 个单独的副本运行这个小程序,以便从同一个订阅中读取,但即使在这种情况下,我也无法有所作为。这表明我对确认有疑问。
我做错了什么?
顺便说一下,我使用 GC DataFlow 实现了解决方案,第一步是从 PubSub 主题中读取,并且在 Python 下运行良好。那是一个不同的库和不同的架构。但它每小时可以轻松处理 9 000 000 条消息。
我仍然很好奇,这应该如何使用 python 和纯 PubSub(没有 Beam)来完成。
(更新)
复制
-
使用名称创建的 GCP 项目:
<your-test-project>
使用项目/所有者角色和以 JSON 格式下载的凭据文件创建服务帐户文件
在命令行中创建订阅:gcloud pubsub subscriptions create projects/<your-test-project>/subscriptions/taxi-ride-client --topic=projects/pubsub-public-data/topics/taxirides-realtime --ack-deadline=60 --message-retention-duration=6h
带有 google-cloud-pubsub 的 Python 3.7 虚拟环境(1.1.0 版)
替换<projectname>
和<credfilename>
后运行代码。源代码here
加博
【问题讨论】:
您是否进行过任何基准测试/分析?有什么方法可以让我们自己运行程序(参见:minimal reproducible example)? 我在原帖末尾添加了复制步骤。 您可以在订阅下添加多个消费者,这应该允许以更高的吞吐量并行处理数据。您仍然应该尝试验证您是否能够像使用一个消费者一样使用消息。 【参考方案1】:由于 Python 运行时在多线程处理方面固有的限制,很难在 Cloud Pub/Sub 中实现高吞吐量。 Dataflow 在其从 Pub/Sub 读取的实现中不使用 Python,因此它不受此类限制。对于具有多核的单台机器,Java 和 Go 往往具有更好的性能特征,因此一种选择是切换语言。或者,您必须水平扩展并启动更多客户端实例,以便您可以并行处理更多数据。您可能会发现blog post on client library performance 很有趣。
【讨论】:
【参考方案2】:比赛后期,但是:
-
您是否考虑过延长截止日期?您的客户端代码显示未来 10 分钟会超时,但 PubSub 仍会在 1 分钟后取消它。为后者尝试 600 秒。
可以选择多个消费者,但是您需要实现同步拉取与带回调的异步。
考虑到您在处理拉取时的延迟,这可能是一个更好的选择。您可以批量消费正在流式发布的内容(Pub-Sub 的目的)。
在实现多线程之前 - 或者如果消息处理受 CPU 限制,则在实现多处理之前 - 从单个 sub pull 开始并首先使用消息计数,然后在需要时添加线程/进程。
【讨论】:
以上是关于怎样全面的使用GOOGLE的主要内容,如果未能解决你的问题,请参考以下文章