V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
fyourm
V2EX  ›  Python

Python 循环问题,求助

  •  
  •   fyourm · 2022-05-05 21:54:58 +08:00 · 2300 次点击
    这是一个创建于 714 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近写 python 代码遇到一个问题,写了一段代码,定义了 4 个变量 a=1 ,b=2 ,c=3 ,d=4 ,跑了一下,用时 4 秒,感觉速度可以,但想看看这些变量如果定义为其他值,跑出来的结果是怎么样的,就改了一下代码 a=[1,2,3],b=[1,2,3],c=[1,2,3],d=[1,2,3],然后定义了一个四重循环,
    for aa in a: for bb in b: for cc in c: for dd in d: 把原来代码原样拷贝了放进去,只是把变量名改了一下,结果跑一次循环要 4 分钟,一共要循环 81 次,要 5.4 个小时,郁闷了,循环会把速度拖慢这么多吗,是这四重循环的问题吗,有啥改进方法吗

    11 条回复    2022-05-05 23:14:56 +08:00
    cocong
        1
    cocong  
       2022-05-05 21:58:28 +08:00
    加个计时,看哪里最耗时,就知道了。
    Juszoe
        2
    Juszoe  
       2022-05-05 22:00:09 +08:00
    跑个 profile ,大概是代码有问题
    alsas
        3
    alsas  
       2022-05-05 22:00:53 +08:00
    python 循环本来就慢 用 numba 加速下
    leimao
        4
    leimao  
       2022-05-05 22:16:31 +08:00 via iPhone
    zictos
        5
    zictos  
       2022-05-05 22:23:00 +08:00
    就这么一点数据量不可能要这么久的,我试了就 1 秒不到
    stein42
        6
    stein42  
       2022-05-05 22:23:18 +08:00
    请讲下你用的什么硬件和软件。
    定义 4 个变量用时 4 秒,感觉这里不适合用 python 。
    happybabys
        7
    happybabys  
       2022-05-05 22:30:27 +08:00 via Android
    升级硬件试试看
    zictos
        8
    zictos  
       2022-05-05 22:32:16 +08:00
    @stein42 #6 哈哈,定义 4 个变量用时 4 秒还感觉速度可以
    fyourm
        9
    fyourm  
    OP
       2022-05-05 22:32:48 +08:00
    搞定了,把那段代码 def 成一个函数再放进 4 重循环里,4 个变量作为参数传递进函数就行了,速度又变回 4 秒一次循环了,也不知道为什么,大概我这段代码里面有什么内存泄漏吧
    LeeReamond
        10
    LeeReamond  
       2022-05-05 23:04:48 +08:00
    虽然看不懂,定义四个变量跑四秒让我很震惊,但想必 LZ 改的很嗨吧。。
    fyourm
        11
    fyourm  
    OP
       2022-05-05 23:14:56 +08:00
    @LeeReamond 代码还是有点小复杂,其中定义了 4 个变量参数,想看看参数的变化会影响我代码的最终结果,所以定义了列表想遍历一下所有参数变化的可能性
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5589 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:55 · PVG 10:55 · LAX 19:55 · JFK 22:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.