Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. const faker = require('faker')
  2. // const N = 30
  3. const N = 2000000
  4. const fs = require('fs')
  5. const record = () => {
  6. // faker.fake(
  7. // '{{name.lastName}},{{name.lastName}},{{address.city}},{{address.county}},{{address.zipCode}},{{hacker.adjective}}\n'
  8. return [
  9. faker.name.firstName(),
  10. faker.name.lastName(),
  11. faker.address.city(),
  12. faker.address.state(),
  13. faker.address.zipCode(),
  14. faker.hacker.adjective()
  15. ]
  16. }
  17. const cluster = require('cluster')
  18. const numCPUs = require('os').cpus().length
  19.  
  20. let workers = []
  21. let written = 0
  22. if (cluster.isMaster) {
  23. masterProcess()
  24. } else {
  25. childProcess()
  26. }
  27.  
  28. function masterProcess () {
  29. console.log(`Master ${process.pid} is running`)
  30.  
  31. for (let i = 0; i < numCPUs; i++) {
  32. console.log(`Forking process number ${i}...`)
  33. const worker = cluster.fork()
  34. worker.on('message', msg => {
  35. if (msg === 'done') {
  36. written += 1
  37. }
  38. if (written % 100000 === 0) {
  39. console.log(`written=${written}`)
  40. }
  41. if (written >= N) {
  42. console.log('all done')
  43. process.exit()
  44. }
  45. })
  46. workers.push(worker)
  47. }
  48. for (let i = 0; i < N; i++) {
  49. const workerId = i % numCPUs
  50. const worker = workers[workerId]
  51. worker.send(i)
  52. }
  53. }
  54.  
  55. function childProcess () {
  56. const writer = fs.createWriteStream('out.csv', { flags: 'a' })
  57. console.log(`Worker ${process.pid} started`)
  58. process.on('message', message => {
  59. const msg = record().join(',') + '\n'
  60. writer.write(msg, () => {
  61. // signal writing is done for each entry
  62. process.send('done')
  63. })
  64. })
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement