热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我的i5笔记本电脑运行python脚本的速度比至强40核心服务器的CPUUbuntu18.04快,为什么?

我创建了一个python脚本,该脚本正在从文件中读取数据并从中提取所需的数据,问题

我创建了一个python脚本,该脚本正在从文件中读取数据并从中提取所需的数据,问题是该脚本在我的i5(Intel(R)Core(TM)i5-8300H CPU @ 2.30)上耗时37秒GHz)笔记本电脑,但在具有CPU(Intel®Xeon®CPU E5-2670 v2 @ 2.50GHz)的服务器上花费70秒。

服务器的CPU有40个内核,因此它应该比我的笔记本电脑执行任务更快。两个系统都运行ubuntu 18.04 OS。

该脚本正在使用多处理程序,而服务器是我的另一个系统,它没有承受更高的负载。我的笔记本电脑同时具有SSD和HHD(操作系统已安装在SSD中),但是我已将文件放在HDD驱动器中,脚本从该驱动器读取数据,而Server仅具有HDD。文件大小约为1 GB,我已经测试了1000条记录的性能。

1)https://www.youtube.com/watch?v=0Q2wv6saL3Q-在我的40核心服务器上测试脚本。

2)https://www.youtube.com/watch?v=hSInldq1uRY-在她的8核计算机上测试相同的脚本

下面的代码在for循环中运行,同时从1GB的文件中读取数据,目标方法使用漂亮的汤从我从文件中获取的doc中提取数据。

t0 = multiprocessing.Process(target=get_domain,args=(record.url,processedData))
t1 = multiprocessing.Process(target=getTLD,processedData))
t2 = multiprocessing.Process(target=geturlscheme,processedData))
t3 = multiprocessing.Process(target=getallemails,args=(soup,processedData))
t4 = multiprocessing.Process(target=getcanonicalURL,processedData))
t5 = multiprocessing.Process(target=getMetaKeyword,processedData))
t0.start()
t1.start()
t2.start()
t3.start()
t4.start()
t5.start()
t0.join()
t1.join()
t2.join()
t3.join()
t4.join()
t5.join()

以下是使用lscpu命令的两个系统的cps的详细信息:

笔记本电脑的详细信息

:~$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit,64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 158
Model name: Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz
Stepping: 10
CPU MHz: 800.023
CPU max MHz: 4000.0000
CPU min MHz: 800.0000
BogoMIPS: 4608.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7

服务器的详细信息

root@ubuntu18:~# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit,64-bit
Byte Order: Little Endian
CPU(s): 40
On-line CPU(s) list: 0-39
Thread(s) per core: 2
Core(s) per socket: 10
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 62
Model name: Intel(R) Xeon(R) CPU E5-2670 v2 @ 2.50GHz
Stepping: 4
CPU MHz: 1200.470
CPU max MHz: 3300.0000
CPU min MHz: 1200.0000
BogoMIPS: 5000.02
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 25600K
NUMA node0 CPU(s): 0-9,20-29
NUMA node1 CPU(s): 10-19,30-39

请让我知道可能是什么原因,我错过了什么吗?

谢谢



Xeon E5-xxxx v2是IvyBridge。那已经很老了如果您的工作量主要是单线程性能的瓶颈,那么您的结果看起来非常合理。现代的四核具有更好的每线程内存带宽(但具有多个线程的最大聚合更低),以及更低的内存延迟。 (内核与内存控制器之间的较小的环形总线)。

笔记本电脑的最大涡轮速度也更高(4GHz与3.3GHz)。

Haswell和更新的分支预测器在运行解释器(例如CPython)方面要好得多;可能想分析分支的错误预测,以了解其中是否有很大差异。

您似乎拥有固定数量的线程。它不仅具有笔记本电脑上的物理核心,而且可以通过超线程很好地扩展(或者几个线程相对较快地完成,因此总运行时间通常是最慢的线程单独运行的时间)。看来这不会成为共享内存带宽的瓶颈。

然后,您最担心的是单线程性能,而笔记本电脑的单线程速度更快。


重新:1GB文件:希望它在操作系统的磁盘缓存中保持高温。 (在Unix / Linux下也称为“ pagecache”)。因此,实际的磁盘IO不会发生,仅读取RAM。

,

我发现了两个严重降低服务器速度的问题。


  1. 固态硬盘。或者缺少SSD,真的。 Python 可能经常访问其链接或参考文件。


  2. 笔记本电脑的硬盘驱动器比它看起来的要快:它有一个旧硬盘所没有的强大的主动缓存管理。如果它寻找 x 数据,它仍然是一个缓慢的驱动器,但如果读取或写入大块文件,它会很快,因为它不必寻找 python 链接和引用文件,缓存不受影响。


一种廉价的解决方法是在服务器上安装廉价的 ssd 升级,并在其上安装操作系统、编译器和交换文件。 2021 年运行编译器的硬盘延迟不会很大。


推荐阅读
  • 本文详细介绍了Python的multiprocessing模块,该模块不仅支持本地并发操作,还支持远程操作。通过使用multiprocessing模块,开发者可以利用多核处理器的优势,提高程序的执行效率。 ... [详细]
  • 本文详细介绍了LeetCode第791题“自定义字符串排序”的解决方案,包括两种不同的实现方法及其背后的逻辑。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 本文详细介绍了中心方形数的概念及其计算方法,并提供了多种编程语言下的实现代码。 ... [详细]
  • Python安全实践:Web安全与SQL注入防御
    本文旨在介绍Web安全的基础知识,特别是如何使用Python和相关工具来识别和防止SQL注入攻击。通过实际案例分析,帮助读者理解SQL注入的危害,并掌握有效的防御策略。 ... [详细]
  • 本文探讨了在使用 ClickOnce 部署方式时遇到的自动更新失败问题,包括本地安装与服务器安装的不同表现,并提供了详细的解决方案。 ... [详细]
  • SecureCRT 使用指南与技巧
    本文详细介绍 SecureCRT 软件的基本功能,并分享了一些实用的操作技巧,旨在帮助用户提高远程管理效率。 ... [详细]
  • 本文介绍了一种算法,用于在一个给定的二叉树中找到一个节点,该节点的子树包含最大数量的值小于该节点的节点。如果存在多个符合条件的节点,可以选择任意一个。 ... [详细]
  • Python中调用Java代码的方法与实践
    本文探讨了如何在Python环境中集成并调用Java代码,通过具体的步骤和示例展示了这一过程的技术细节。适合对跨语言编程感兴趣的开发者阅读。 ... [详细]
  • 本文详细介绍了如何在本地环境中安装配置Frida及其服务器组件,以及如何通过Frida进行基本的应用程序动态分析,包括获取应用版本和加载的类信息。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 如何在Win10系统下通过VMware 14 Pro安装CentOS 7
    本文详细介绍了在Windows 10操作系统中使用VMware Workstation 14 Pro搭建CentOS 7虚拟环境的步骤,包括所需工具、安装过程及系统配置等。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
author-avatar
妩媚的麻醉效应
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有