为什么for循环中基于Pandas的函数会随着时间线性增加?

时间:2018-12-10 13:33:16

标签: python pandas memory

我正在Python 3.6中运行一个脚本,以实质上遍历文件路径并提取与两个数据集相对应的.dbf文件(通过for-loop),然后将其用于比较。在此for循环中,特定列将转换为数字类型,尽管在将.dbf作为数据帧处理后,它还会删除重复的行,但由于空字符串,尽管它仍为数字,但通常仍为字符串格式。明确地说,这是

<?php
 $conn = mysqli_connect("localhost", "root", '');
 mysqli_select_db($conn, "appletree");  
 $result = mysqli_query($conn, "SELECT * FROM wiki");
?>
<!DOCTYPE html>
<html>
  <head>
  <meta charset="UTF-8">
  </head>
  <body>
    <article>
      <?php
       if(empty($_GET['name']) === false ) {
          $sql = "SELECT * FROM wiki WHERE name='".$_GET['name']."'";
          $result = mysqli_query($conn, $sql);
          $row = mysqli_fetch_assoc($result);
          echo $row['main'];
      }else{
        echo "MBP wiki 는 php기반 위키입니다";
      }
      ?>
    </article>
  </body>
</html>

这按预期工作。但是,当for循环运行了500次以上的迭代时,这些行的报告运行时间似乎随着迭代计数器线性增加,并且执行所需的时间大致相同(两者之和显示为{{ 3}})。这个问题只会随着时间的流逝而发生:当我们停止循环并中途重新启动它时,这些行的运行时间会减少到应有的水平,然后又开始以线性方式增加。

已确认这些是增加总体运行时间的代码行-它将在0.1秒左右开始,但是在600次迭代之后需要45秒。我曾尝试搜索有关Pandas函数的已知问题,但这种行为无济于事。两个功能花费大约相同的时间并以相同的速率增加,这特别有趣。有人知道为什么发生此问题吗?

我尝试在每次迭代结束时清除数据帧,并执行垃圾回收,并密切注意内存使用情况。当前正在16GB的计算机上运行,​​并且未达到内存限制。暂时的解决方法是手动调整for循环范围并分别执行两次运行,这是不理想的。

0 个答案:

没有答案