Python,多线程太慢,多进程

2023-11-24

我是多处理新手,

我了解一些有关线程的知识,但我需要提高计算速度,希望通过多重处理:

示例说明:将字符串发送到线程,更改字符串+基准测试, 将结果发回打印。

from threading import Thread

class Alter(Thread):
    def __init__(self, word):
        Thread.__init__(self)
        self.word = word
        self.word2 = ''

    def run(self):
        # Alter string + test processing speed
        for i in range(80000):
            self.word2 = self.word2 + self.word

# Send a string to be altered
thread1 = Alter('foo')
thread2 = Alter('bar')
thread1.start()
thread2.start()

#wait for both to finish
while thread1.is_alive() == True: pass
while thread2.is_alive() == True: pass


print(thread1.word2)
print(thread2.word2)

目前这大约需要 6 秒,我需要它跑得更快。
我一直在研究多重处理,但找不到与上述代码等效的东西。我想我所追求的是pooling但我发现的例子很难理解。我想利用所有核心(8 核)multiprocessing.cpu_count()但我确实只有有关多处理的有用信息的碎片,不足以复制上述代码。如果有人能指出我正确的方向或更好的方向,请提供一个例子,我将不胜感激。请使用Python 3


只需更换threading with multiprocessing and Thread with Process。 Python 中的线程(几乎)从未用于获得性能,因为有一个大坏蛋!我在另一篇文章中解释过SO-post带有一些文档链接和关于 python 线程的精彩讨论。

But the 多重处理模块有意与线程模块非常相似。您几乎可以将它用作直接替代品!

据我所知,多处理模块不提供强制使用特定数量核心的功能。它依赖于操作系统的实现。您可以使用 Pool 对象并将工作对象限制为核心计数。或者您可以寻找其他 MPI 库,例如 pypar。在 Linux 下,您可以在 shell 下使用管道来启动不同内核上的多个实例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python,多线程太慢,多进程 的相关文章

  • 在二维数组中进行所有可能的组合

    我正在尝试制作具有所有可能组合的 4x4 16 像素黑白图像数组 我制作了以下数组作为模板 template 0 0 0 0 start with all white pixels 0 0 0 0 0 0 0 0 0 0 0 0 然后我想迭
  • 在 SQLAlchemy 中,过滤器是在连接之前还是之后应用?

    使用 SQLAlchemy 我执行如下查询 import models as m import sqlalchemy as sa s session maker q s query m ShareCount m Article join m
  • 按每个元素中出现的数字对字符串列表进行排序[重复]

    这个问题在这里已经有答案了 我有一个脚本 其目的是对不断下载到服务器上的空间数据集文件进行排序和处理 我的列表目前大致如下 list file t00Z wrff02 grib2 file t00Z wrff03 grib2 file t0
  • 有什么好的适用于 Google App Engine 应用程序的 AJAX 框架吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在我的 Google App Engine 应用程序中实现 AJAX 因此我正在寻找一个好的
  • 在 Python 中延迟转置列表

    所以 我有一个延迟生成的可迭代的三元组 我试图弄清楚如何将其转换为 3 个可迭代对象 分别由元组的第一个 第二个和第三个元素组成 然而 我希望这件事能懒惰地完成 所以 举例来说 我希望 1 2 3 4 5 6 7 8 9 将变成 1 4 7
  • 分配内存时线程争用

    在 C 中 我运行了一个创建许多小对象的玩具代码 我知道最好应该避免这种情况 我只是想研究这个问题 对于创建的对象总量相同 一个线程的运行速度比每个处理器一个线程 Parallel For 的运行速度快 原子操作包括创建一个包含 20k 个
  • 如何在Python + Selenium中获取元素的值

    我在我的 Python 3 6 3 代码中得到了这个 HTML 元素 作为 Selenium网页元素当然 span class ocenaCzastkowa masterTooltip style color 000000 alt 5 sp
  • Python Apache Beam 端输入断言错误

    我对 Apache Beam Cloud Dataflow 还很陌生 所以如果我的理解不正确 我深表歉意 我正在尝试通过管道读取大约 30 000 行长的数据文件 我的简单管道首先从 GCS 打开 csv 从数据中提取标题 通过 ParDo
  • 对法语文本进行词形还原[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些法语文本需要以某种方式进行处理 为此 我需要 首先 将文本标记为单词 然后对这些单词进行词形还原以避免多次处理相同的词根 据我
  • cxfreeze virtualenv 中缺少 distutils 模块

    从 python3 2 项目运行 cxfreeze 二进制文件时 我收到以下运行时错误 project dist project distutils init py 13 UserWarning The virtualenv distuti
  • 如何在 python 中使用交叉验证执行 GridSearchCV

    我正在执行超参数调整RandomForest如下使用GridSearchCV X np array df features all features y np array df gold standard labels x train x
  • 类变量:“类列表”与“类布尔值”[重复]

    这个问题在这里已经有答案了 我不明白以下示例的区别 一次类的实例可以更改另一个实例的类变量 而另一次则不能 示例1 class MyClass object mylist def add self self mylist append 1
  • Django 1.7:如何使用 html/css 文件作为模板发送电子邮件

    从 Django 1 7 开始 可以send email 使用新参数 html message 不幸的是 没有关于如何使用它的全面指南 新手友好 或者至少我找不到它 我需要使发送的电子邮件变得漂亮 因此 我试图弄清楚如何将我的消息包含到 h
  • Python GTK3 Treeview 向上或向下移动选择

    如何在树视图中向上或向下移动所选内容 我的想法是 我可以使用向上和向下按钮将选择向上移动一行或向下移动一行 我的 Treeview 使用 ListStore 不确定这是否重要 首先 我将使用我熟悉的 C 代码 如果您在将其翻译为 Pytho
  • 解析整数集的字符串并列出间隔

    I have 2 5 7 9 12 string 我想从中获取 2 5 7 8 9 12 列表 python中有没有内置的函数 Thanks UPD 我想 直接的答案是No 不管怎样 谢谢你的 片段 使用一个 建议者斯文 马尔纳克 s 2
  • 将二进制数据视为文件对象?

    在此代码片段 由另一个人编写 中 self archive是一个大文件的路径并且raw file是以二进制数据形式读取的文件内容 with open self archive rb as f f seek offset raw file s
  • 尝试 numba 时出现巨大错误

    我在使用 numba 时遇到了大量错误 讽刺的是 正确的结果是在错误之后打印的 我正在使用最新的 Anaconda python 并安装了 numba conda install numba 一次在 Ubuntu 13 64 位和 anac
  • JSONDecodeError:额外数据:Python [重复]

    这个问题在这里已经有答案了 我使用以下代码从文件加载 json file file name obj list with open file as f for json obj in f obj list append loads json
  • 如何仅读取 CSV 文件每行的第一列 [重复]

    这个问题在这里已经有答案了 如何在Python中读取CSV文件每行的第一列 我的数据是这样的 1 abc 2 bcd 3 cde 我只需要循环第一列的值 另外 当我在 calc 中打开 csv 文件时 每行中的数据都在同一个单元格中 这正常
  • 将函数按元素应用于两个 DataFrame

    如何应用函数z ij f x ij y ij 来自数据框X and Y相同大小并将结果保存到 DataFrameZ 这取决于你有什么样的功能 很多功能已经被矢量化为数据框 例如 等等 所以对于这些功能 你可以简单地做Z X Y or Z X

随机推荐

  • PL/SQL 中的并行调用

    我有一个带有 proc 的包 它将执行许多其他过程 如下所示 CREATE PACKAGE BODY pkg IS CREATE PROCEDURE do IS BEGIN other pkg other proc other pkg2 o
  • 将自定义对象从 servlet 传递到 JSP

    我想将 Student 类型的自定义对象从 servlet 传递到 JSP 我创建了一个学生 bean 类 Student 包含 2 个属性firstname 和lastName 学生豆 import java io Serializabl
  • n个字符串的最长公共子串的Java实现

    我需要找到 n 个字符串的最长公共子串并在我的项目中使用结果 java中是否有任何现有的实现 库已经做到了这一点 关于什么并发树 这是一个小型 约 100 KB 库 可用于梅文中心 该算法使用组合Radix and 后缀树 众所周知 它有一
  • 使用按位运算求给定数字的平方根

    是否有一种算法可以使用按位运算求给定数字的平方根 有这段著名的代码魔法计算inverse平方根与一些非常聪明的小玩意 它被错误地归因于约翰 卡马克 这是更深入的挖掘进入它的起源 也许这就是你要问的 但我不建议使用它 在现代 CPU 上 它无
  • Java int 到 byte 的隐式转换

    我即将开始处理需要读取字节和创建字符串的事情 正在读取的字节表示 UTF 16 字符串 因此 为了测试一下 我想将 UTF 16 编码的简单字节数组转换为字符串 数组中的前 2 个字节必须表示字节顺序 因此必须是 0xff 0xfe 或 0
  • 告诉 gcc 专门展开循环

    我如何告诉 GCC 展开特定循环 我使用了 CUDA SDK 可以使用以下命令手动展开循环 pragma unroll gcc 有类似的功能吗 我用谷歌搜索了一下但找不到任何东西 GCC 8 获得了一个新的编译指示 允许您控制循环展开的方式
  • .gitattributes 中的 `* text=auto` 和 `* text eol=lf` 有什么区别?

    我一遍又一遍地查看文档 gitattributes但我无法找到关于这两者之间有什么区别的明确答案 text auto text eol lf Also is text auto仅适用于 或者它也可以与特定的扩展一起使用 在这种情况下有什么区
  • 绝对定位及其父元素

    我总是听说 当您使用绝对定位时 您想要充当其父级的元素需要有一个position of relative 我试图构建一个 CSS 下拉菜单 当我将其父元素设置为时 我正在努力让下拉菜单项拉伸超出主菜单项的宽度relative 下拉菜单项中的
  • 用户不活动时屏幕变暗

    我有一个应用程序 可以使用 4 个小时 但用户只需每 5 分钟需要进行一次输入或阅读屏幕 让手机进入睡眠状态并锁定屏幕有点烦人 所以我有两个选择 getWindow addFlags WindowManager LayoutParams F
  • svg 到 png 不起作用,怀疑 svg 元素差异

    我无法弄清楚为什么两个不同的 svg 会导致我的 javascript 在一个实例中工作 但在另一个实例中不起作用 我只交换了两个示例中的 svg 元素 一个有效 一个无效 这是两个 jsFiddles 中的代码 我从中得到的工作示例her
  • 在 Groovy/Java 中比较两个 XML 字符串/文件

    我正在编写单元测试来检查一些 XML 构建器 现在我遇到了预期结果和实际结果之间的语法差异问题 尽管它们的语义相同 Example 预期结果 您可以使用 GroovyXMLUnit像这样的实用程序 XMLUnit setIgnoreWhit
  • 如何根据选定的注释移动 MKMapView

    我有一个 MKMapView 它填充了我的整个视图 但是当选择一个图钉时 我会在地图顶部向上滑动另一个视图 我想移动地图 以便图钉出现在地图可见区域的中心 很难解释 但希望它是有道理的 提前致谢 您可以尝试从visibleMapRect对于
  • 将 jquery 函数包装在闭包中有什么好处?

    嗨 我一直忙于将我的 JQuery 知识提升到一个新的水平 到目前为止 我认为我已经理解了所有内容 但是当我冒险学习更高级的教程时 我注意到有几个实例 其中 JQuery 例程被包装在一个闭包 见下文 然而 让我困惑的是它传递一个 并返回
  • SQL 将结果连接到 codeigniter 中的对象中

    好的 一些背景知识 刚刚进入 codeigniter 不喜欢 sql 和服务器端脚本 我知道什么是连接 我第一次拥有多对多数据库 这是因为连接通常会产生以下示例 但我想解析它 而不必构建代码来忽略重复 这是一个 3 表连接示例 当我加入更多
  • 合并同一项目的两个git存储库

    我目前是唯一一位从事我从前任接手的项目的开发人员 当我接手这个项目时 它还没有受到源代码控制 因此 我创建了一个新的 git 存储库 对状态进行了初始提交 并从此开始对其进行处理 但最近我在备份中发现了同一个项目的一个古老版本 它实际上是一
  • 通过Windows C++让鼠标通过

    我正在开发一个 Win32 C 应用程序 我想忽略鼠标事件并让其传递到我的窗口下方的窗口 基本上我下面的窗口将处理鼠标事件 我不想使用 SendMessage 将鼠标消息发送到我下面的窗口或使用 SetCapture 有没有一种方法可以基本
  • 在 Dask 中排序

    我想找到替代方案pandas dataframe sort value在 dask 中运行 我走过来了设置索引 但它会按单个列排序 如何对 Dask 数据框的多列进行排序 目前为止Dask似乎还不支持多列排序 但是 创建一个新列来连接已排序
  • 找不到文件:mainwindow.obj

    我创建了一个 GUI 应用程序 gt QMainWindow 我在菜单 插槽中添加了 1 项 我创建了一个新项目 gt QDialog 我使用插槽方法尝试显示创建的对话框 但出现以下错误 mainwindow obj 1 错误 LNK201
  • 有没有办法了解“平台”访问网页的硬件资源?

    我希望能够从网页中了解浏览器的硬件资源 或者至少是一个粗略的估计 即使您检测到现代技术的存在 例如csstransforms3d csstransitions requestAnimationFrame 在浏览器中通过类似的工具Modern
  • Python,多线程太慢,多进程

    我是多处理新手 我了解一些有关线程的知识 但我需要提高计算速度 希望通过多重处理 示例说明 将字符串发送到线程 更改字符串 基准测试 将结果发回打印 from threading import Thread class Alter Thre