def popen(fn, *args, **kwargs) -> subprocess.Popen:
    """
    Please ensure you're not killing the process before it had started properly
    :param fn:
    :param args:
    :param kwargs:
    :return:
    """

    args = popen_encode(fn, *args, **kwargs)

    logging.getLogger(__name__).debug('Start %s', args)

    p = subprocess.Popen(args)
    return p