def reportResourceUsage(imageObjectList, outwcs, num_cores,
                        interactive=False):
    """ Provide some information to the user on the estimated resource
    usage (primarily memory) for this run.
    """

    from . import imageObject
    if outwcs is None:
        output_mem = 0
    else:
        if isinstance(outwcs,imageObject.WCSObject):
            owcs = outwcs.final_wcs
        else:
            owcs = outwcs
        output_mem = np.prod(owcs.pixel_shape) * 4 * 3  # bytes used for output arrays
    img1 = imageObjectList[0]
    numchips = 0
    input_mem = 0
    for img in imageObjectList:
        numchips += img._nmembers # account for group parameter set by user

    # if we have the cpus and s/w, ok, but still allow user to set pool size
    pool_size = util.get_pool_size(num_cores, None)
    pool_size = pool_size if (numchips >= pool_size) else numchips

    inimg = 0
    chip_mem = 0
    for img in imageObjectList:
        for chip in range(1,img._numchips+1):
            cmem = img[chip].shape[0]*img[chip].shape[1]*4
            inimg += 1
            if inimg < pool_size:
                input_mem += cmem*2
            if chip_mem == 0:
                chip_mem = cmem
    max_mem = (input_mem + output_mem*pool_size + chip_mem*2)//(1024*1024)

    print('*'*80)
    print('*')
    print('*  Estimated memory usage:  up to %d Mb.'%(max_mem))
    print('*  Output image size:       {:d} X {:d} pixels. '.format(*owcs.pixel_shape))
    print('*  Output image file:       ~ %d Mb. '%(output_mem//(1024*1024)))
    print('*  Cores available:         %d'%(pool_size))
    print('*')
    print('*'*80)

    if interactive:
        print('Continue with processing?')
        while True:
            if sys.version_info[0] >= 3:
                k = input("(y)es or (n)o").strip()[0].lower()
            else:
                k = raw_input("(y)es or (n)o").strip()[0].lower()

            if k not in ['n', 'y']:
                continue

            if k == 'n':
                raise KeyboardInterrupt("Execution aborted")
Provide some information to the user on the estimated resource
    usage (primarily memory) for this run.