RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1426511
Accepted
Кирилл Маколов
Кирилл Маколов
Asked:2022-09-04 18:55:47 +0000 UTC2022-09-04 18:55:47 +0000 UTC 2022-09-04 18:55:47 +0000 UTC

如何使循环同时执行并有时加快代码速度?

  • 772

我有一个8循环的代码。每两个循环处理一个数据字典,在这个例子中是一个列表。
告诉我如何确保每对循环同时计算,而每对循环同时产生一个结果,这样就不会出现一对先于另一对产生结果的情况。

而第二个时刻。

如何加快代码速度?有一些有效的方法。我尝试了多线程的基础知识,但代码只是变慢了。他很可能做错了什么。

例如,我给出最简单的周期,我的工作周期更难计算,但我不能给你。(保密)。

data1 = [5, 6, 7, 3, 5 , 8, 3]
for i in data1:
    if i == 3:
        data1[i] = 9
print(data1)
for i in data1:
    if i == 2:
        data1[i] = 5
print(data1)

data2 = [5, 6, 7, 3, 5 , 8, 3]
for i in data2:
    if i == 8:
        data1[i] = 9
print(data2)
for i in data1:
    if i == 5:
        data2[i] = 00
print(data2)

data3 = [5, 6, 7, 3, 5 , 8, 3]
for i in data3:
    if i == 5:
        data3[i] = 9
print(data3)
for i in data3:
    if i == 1:
        data3[i] = 5
print(data3)

data4 = [5, 6, 7, 3, 5 , 8, 3]
for i in data4:
    if i == 3:
        data4[i] = 5
print(data4)
for i in data4:
    if i == 2:
        data4[i] = 9
print(data4)

提前感谢大家花时间回答我的问题。

python многопоточность
  • 2 2 个回答
  • 48 Views

2 个回答

  • Voted
  1. Best Answer
    CrazyElf
    2022-09-04T19:53:54Z2022-09-04T19:53:54Z

    注意:在示例中,我使用numpy.array,但使用纯 Pythonic 列表,一切都会稍微复杂一些。但无论如何,您最好关注类型化数组以加快计算速度,本机 Python 类型非常慢。除非您需要使用无限int-s,否则本机intpython 具有优势。


    如果列表中有普通数字以及相当简单的分支和计算,那么这可以Numba毫不费力地提供帮助:

    import numba as nb
    import numpy as np
    
    def process1(data1):
        for i in data1:
            if i == 3:
                data1[i] = 9
        for i in data1:
            if i == 2:
                data1[i] = 5
        return data1
    
    data1 = np.random.randint(100, size=(10_000_000))
    %time process1(data1)
    
    p1 = nb.njit(process1)
    %time p1(data1)
    
    print()
    

    结论:

    CPU times: user 6.43 s, sys: 0 ns, total: 6.43 s
    Wall time: 6.45 s
    CPU times: user 224 ms, sys: 0 ns, total: 224 ms
    Wall time: 224 ms
    

    1000 万个元素的列表,普通 python 处理 6 秒,使用装饰器后numba.njit,相同列表和相同代码的处理时间为 0.2 秒,不费吹灰之力,加速 30 倍。此外,列表的大小越大,加速越明显。

    但是,如果计算不仅仅是算术并且条件不是那么简单,那么您Numba可能必须对其进行修改,以便它同意加速您的代码。

    • 3
  2. Artiom
    2022-09-04T19:38:11Z2022-09-04T19:38:11Z

    我自己做奥林匹克编程。曾几何时,我想到可以使用多线程加速代码,但这并没有给出结果。为了加快程序速度,使用了动态编程方法,例如记忆化。此外,您可以使用 PyPy,而不是通常的 Python 3 编译器,它更快。
    大约8个周期。我正在使用该模块进行多线程处理Thread。下面是它的工作原理:

    def func(d):
        for i in range(d):
            print(i)
    Thread.start_new_thread(func, (9))
    

    一般来说,在我看来,如果两个线程更改一个数组,它们就会相互冲突。因此,如果您需要对数百万个数字执行一些大型运算,那么我建议您使用 C++

    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5