def main(argv): try: opts, args = getopt.getopt( argv, "hc:d:n:m:", ["help", "city=", 'directory=', 'number=', 'mode=']) except getopt.GetoptError as err: print str(err) usage() sys.exit(2) # 处理输入参数 city, directory, number, mode = 'beijing', '/enigma/tao.jiang/datasets/JingJinJi', 999, 'all' for opt, arg in opts: if opt == '-h': usage() sys.exit() elif opt in ("-c", "--city"): city = arg elif opt in ("-d", "--directory"): directory = arg elif opt in ('-n', '--number'): number = int(arg) elif opt in ('-m', '--mode'): mode = arg # cunchu STARTTIME = time.time() print "Start approach at %s" % STARTTIME conn, db = connectMongo('tdnormal') GRIDSNUM = db['newgrids_%s' % city].count() gridsData, validIDs = getGridsFromMongo(city, db) conn.close() CITYDISIND, CITYDISNUM = getCityDisInfo(city) if mode == 'all': # @多进程运行程序 START manager = Manager() jobs = [] for x in xrange(0, 20): # time.sleep(random.random()*2) PROP = { 'INDEX': x, 'DIRECTORY': directory, 'GRIDSNUM': GRIDSNUM, 'CITY': city, 'CITYDISIND': CITYDISIND, 'CITYDISNUM': CITYDISNUM, 'FILENUM': number } DATA = {'gridsData': gridsData, 'validIDs': validIDs} jobs.append(Process(target=processTask, args=(PROP, DATA))) jobs[x].start() # 等待所有进程结束 for job in jobs: job.join() # Start to merge result files MERGE = time.time() print "Start merge at %s" % MERGE mergeMatrixFiles(city, GRIDSNUM, directory) print "End merge in %s" % str(time.time() - MERGE) ENDTIME = time.time() print "End approach at %s" % ENDTIME
def main(argv): # 输入参数对照列表 try: opts, args = getopt.getopt(argv, "hc:d:n:", ["help", "city=", 'directory=', 'number=']) except getopt.GetoptError as err: print str(err) usage() sys.exit(2) # 处理输入参数 city, directory, number = 'zhangjiakou', '/home/tao.jiang/datasets/JingJinJi', 999 for opt, arg in opts: if opt == '-h': usage() sys.exit() elif opt in ("-c", "--city"): city = arg elif opt in ("-d", "--directory"): directory = arg elif opt in ('-n', '--number'): number = int(arg) STARTTIME = time.time() print "Start approach at %s" % STARTTIME # 连接数据获取网格信息,包括总数,具有有效POI的网格 conn, db = connectMongo('tdnormal') GRIDSNUM = db['newgrids_%s' % city].count() gridsData, validIDs = getGridsFromMongo(city, db) conn.close() # 获取城市起始区划下标,城市行政区划数目 CITYDISIND, CITYDISNUM = getCityDisInfo(city) # @多进程运行程序 START manager = Manager() jobs = [] for x in xrange(0,20): PROP = { 'INDEX': x, 'DIRECTORY': directory, 'GRIDSNUM': GRIDSNUM, 'CITY': city, 'CITYDISIND': CITYDISIND, 'CITYDISNUM': CITYDISNUM, 'FILENUM': number } DATA = { 'gridsData': gridsData, 'validIDs': validIDs } jobs.append( Process(target=processTask, args=(PROP, DATA)) ) jobs[x].start() # 等待所有进程结束 for job in jobs: job.join() # 合并结果文件 MERGE = time.time() print "Start merge at %s" % MERGE mergeMatrixFiles(city, GRIDSNUM, directory) mergeDistributionFiles(city, directory) print "End merge in %s" % str(time.time() - MERGE) # 结束 ENDTIME = time.time() print "End approach at %s" % ENDTIME