• php脚本使用多进程处理数据


     1 <?php
     2 ini_set('memory_limit', -1);
     3 require dirname(__DIR__) . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'autoload.php';
     4 
     5 
     6 $arr = range(0, 1000000);
     7 
     8 class TestRunnable implements JennerSimpleForkRunnable
     9 {
    10     protected $data;
    11 
    12     public function __construct(array $data)
    13     {
    14         $this->data = $data;
    15         #$this->data[0] = 1;
    16     }
    17 
    18     /**
    19      * @return void
    20      */
    21     public function run()
    22     {
    23         sleep(10);
    24         echo getmypid() . ':done当前内存'.(memory_get_usage()/2014/1024).'M' . PHP_EOL;
    25     }
    26 }
    27 
    28 
    29 echo '当前内存'.(memory_get_usage()/1024/1024).'M'.PHP_EOL;
    30 
    31 $pool = new JennerSimpleForkPool();
    32 $pool->execute(new JennerSimpleForkProcess(new TestRunnable($arr)));
    33 $pool->execute(new JennerSimpleForkProcess(new TestRunnable($arr)));
    34 $pool->execute(new JennerSimpleForkProcess(new TestRunnable($arr)));
    35 
    36 $pool->wait();

    注意利用fork进程写时复制特性节省内存

    15行代码注释时,

    当前内存32.427764892578M
    1545:done当前内存16.514655225919M
    1546:done当前内存16.515000465492M
    1547:done当前内存16.515151750248M

    15行代码未注释时,

    当前内存32.428451538086M
    1536:done当前内存32.787138468222M
    1537:done当前内存49.05961783143M
    1538:done当前内存65.331903239821M

  • 相关阅读:
    【BZOJ 2440】[中山市选2011]完全平方数
    【BZOJ 1066】[SCOI2007]蜥蜴
    luogu P1317 低洼地
    luogu P1379 八数码难题
    luogu P1886 滑动窗口
    luogu P1032 字串变换
    题解 P1876 【开灯】
    题解 P1720 【月落乌啼算钱】
    题解 P2863 【[USACO06JAN]牛的舞会The Cow Prom】
    关于线性回归
  • 原文地址:https://www.cnblogs.com/a-flydog/p/11942729.html
Copyright © 2020-2023  润新知