<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def initialize(sdkopts=(), sdklibname=None):
    '''Attempts to initialize the SDK with the specified options.

    Even if initialization fails, a dummy SDK will be available so that SDK
    functions can be called but will do nothing.

    If you call this function multiple times, you must call :func:`shutdown`
    just as many times. The options from all but the first :code:`initialize` call
    will be ignored (the return value will have the
    :data:`InitResult.STATUS_ALREADY_INITIALIZED` status code in that case).

    :param sdkopts: A sequence of strings of the form
        :samp:`{NAME}={VALUE}` that set the given SDK options. Igored in all but
        the first :code:`initialize` call.
    :type sdkopts: ~typing.Iterable[str]
    :param str sdklibname: The file or directory name of the native C SDK
        DLL. If None, the shared library packaged directly with the agent is
        used. Using a value other than None is only acceptable for debugging.
        You are responsible for providing a native SDK version that matches the
        Python SDK version.

    :rtype: .InitResult
    '''

    global _sdk_ref_count #pylint:disable=global-statement
    global _sdk_instance #pylint:disable=global-statement

    with _sdk_ref_lk:
        logger.debug("initialize: ref count = %d", _sdk_ref_count)
        result = _try_init_noref(sdkopts, sdklibname)
        if _sdk_instance is None:
            _sdk_instance = SDK(try_get_sdk())
        _sdk_ref_count += 1
    return result