示例#1
0
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