浏览代码

修改并行方式,超时推出

zhibin 6 年之前
父节点
当前提交
768266a4b9
共有 3 个文件被更改,包括 97 次插入92 次删除
  1. 2 2
      index.js
  2. 88 0
      region.js
  3. 7 90
      worker.js

+ 2 - 2
index.js

@@ -1,7 +1,7 @@
 const childProcess = require('child_process')
 const childProcess = require('child_process')
-const cpuNum = 18
+const cpuNum = 15
 
 
-for (let i = 0; i < cpuNum; ++i) {
+for (let i = 15; i <= cpuNum; ++i) {
   let worker = childProcess.fork('./worker.js')
   let worker = childProcess.fork('./worker.js')
   worker.send(i + 1)
   worker.send(i + 1)
 }
 }

+ 88 - 0
region.js

@@ -0,0 +1,88 @@
+let setting = {
+  1: {
+    minX: -1,
+    maxX: 5,
+    minY: -1,
+    maxY: 5
+  },
+  2: {
+    minX: -1,
+    maxX: 10,
+    minY: -1,
+    maxY: 10
+  },
+  3: {
+    minX: -1,
+    maxX: 20,
+    minY: -1,
+    maxY: 20
+  },
+  9: {
+    minX: 200,
+    maxX: 600,
+    maxY: 100,
+    maxY: 400
+  },
+  10: {
+    minX: 500,
+    maxX: 1100,
+    minY: 200,
+    maxY: 600
+  },
+  11: {
+    minX: 1200,
+    maxX: 2000,
+    minY: 400,
+    maxY: 1200
+  },
+  12: {
+    minX: 2300,
+    maxX: 4300,
+    minY: 1500,
+    maxY: 2100
+  },
+  13: {
+    minX: 4600,
+    maxX: 8600,
+    minY: 2000,
+    maxY: 4000
+  },
+  14: {
+    minX: 10000,
+    maxX: 16600,
+    minY: 5000,
+    maxY: 8000
+  },
+  15: {
+    minX: 23000,
+    maxX: 29000,
+    minY: 10000,
+    maxY: 16000
+  },
+  16: {
+    minX: 40000,
+    maxX: 60000,
+    minY: 23000,
+    maxY: 31000
+  },
+  17: {
+    minX: 80000,
+    maxX: 120000,
+    minY: 50000,
+    maxY: 62000
+  },
+  18: {
+    minX: 200000,
+    maxX: 233000,
+    minY: 80000,
+    maxY: 130000
+  },
+  19: {
+    minX: 380000,
+    maxX: 470000,
+    minY: 180000,
+    maxY: 250000
+  }
+}
+
+module.exports = setting

+ 7 - 90
worker.js

@@ -2,6 +2,7 @@ const fs = require('fs')
 const request = require('request')
 const request = require('request')
 const path = require('path')
 const path = require('path')
 const dirPath = path.join(__dirname, "baseMap");
 const dirPath = path.join(__dirname, "baseMap");
+const setting = require('./region')
 
 
 function checkLocal(zoom, x, y) {
 function checkLocal(zoom, x, y) {
   return new Promise(resolve => {
   return new Promise(resolve => {
@@ -27,13 +28,15 @@ const downImage = (function() {
 
 
     return new Promise(resolve => {
     return new Promise(resolve => {
       try {
       try {
+        // 如果30秒都还没完成则直接返回
+        setTimeout(resolve, 30000)
+
         let readStream = request(url)
         let readStream = request(url)
         let writeStream = fs.createWriteStream(local)
         let writeStream = fs.createWriteStream(local)
 
 
         readStream.on('error', errorHandle)
         readStream.on('error', errorHandle)
 
 
         function errorHandle(err) {
         function errorHandle(err) {
-          console.error(err)
           resolve()
           resolve()
         }
         }
  
  
@@ -49,7 +52,6 @@ const downImage = (function() {
           .on('error', errorHandle)
           .on('error', errorHandle)
       } catch (e) {
       } catch (e) {
         resolve()
         resolve()
-        console.error(e)
       }
       }
     })
     })
   }
   }
@@ -61,95 +63,10 @@ async function cache(...args) {
   }
   }
 }
 }
 
 
-let setting = {
-  1: {
-    minX: -1,
-    maxX: 5,
-    minY: -1,
-    maxY: 5
-  },
-  2: {
-    minX: -1,
-    maxX: 10,
-    minY: -1,
-    maxY: 10
-  },
-  3: {
-    minX: -1,
-    maxX: 20,
-    minY: -1,
-    maxY: 20
-  },
-  9: {
-    minX: 200,
-    maxX: 600,
-    maxY: 100,
-    maxY: 400
-  },
-  10: {
-    minX: 500,
-    maxX: 1100,
-    minY: 200,
-    maxY: 600
-  },
-  11: {
-    minX: 1200,
-    maxX: 2000,
-    minY: 400,
-    maxY: 1200
-  },
-  12: {
-    minX: 2300,
-    maxX: 4300,
-    minY: 1500,
-    maxY: 2100
-  },
-  13: {
-    minX: 4600,
-    maxX: 8600,
-    minY: 2000,
-    maxY: 4000
-  },
-  14: {
-    minX: 10000,
-    maxX: 16600,
-    minY: 5000,
-    maxY: 8000
-  },
-  15: {
-    minX: 23000,
-    maxX: 29000,
-    minY: 10000,
-    maxY: 16000
-  },
-  16: {
-    minX: 40000,
-    maxX: 60000,
-    minY: 23000,
-    maxY: 31000
-  },
-  17: {
-    minX: 80000,
-    maxX: 120000,
-    minY: 50000,
-    maxY: 62000
-  },
-  18: {
-    minX: 200000,
-    maxX: 233000,
-    minY: 80000,
-    maxY: 130000
-  },
-  19: {
-    minX: 380000,
-    maxX: 470000,
-    minY: 180000,
-    maxY: 250000
-  }
-}
-
 process.on('message', async msg => {
 process.on('message', async msg => {
   let zoom = Number(msg)
   let zoom = Number(msg)
+  // 多少个请求一并
+  let parallel = 10
 
 
   console.log(zoom)
   console.log(zoom)
   let {minX, maxX, minY, maxY} = setting[zoom]
   let {minX, maxX, minY, maxY} = setting[zoom]
@@ -161,7 +78,7 @@ process.on('message', async msg => {
 
 
   for (let x = maxX; x > minX; x--) {
   for (let x = maxX; x > minX; x--) {
     for (let y = minY; y < maxY && y < x;) {
     for (let y = minY; y < maxY && y < x;) {
-      let run = y + 100 < maxY ? 100 : maxY - y
+      let run = y + parallel < maxY ? parallel : maxY - y
       let pros = []
       let pros = []
       for (let h = 0; h < run; h++) {
       for (let h = 0; h < run; h++) {
         count++
         count++