def __init__(self, client_kwargs=None, config=None):
if client_kwargs is None:<EOL><INDENT>client_kwargs = {}<EOL><DEDENT>self._client_factory = ClientFactory(client_kwargs)<EOL>self._transfer_config = config<EOL>if config is None:<EOL><INDENT>self._transfer_config = ProcessTransferConfig()<EOL><DEDENT>self._download_request_queue = multiprocessing.Queue(<NUM_LIT:1000>)<EOL>self._worker_queue = multiprocessing.Queue(<NUM_LIT:1000>)<EOL>self._osutil = OSUtils()<EOL>self._started = False<EOL>self._start_lock = threading.Lock()<EOL>self._manager = None<EOL>self._transfer_monitor = None<EOL>self._submitter = None<EOL>self._workers = []<EOL>
Downloads S3 objects using process pools

        :type client_kwargs: dict
        :param client_kwargs: The keyword arguments to provide when
            instantiating S3 clients. The arguments must match the keyword
            arguments provided to the
            `botocore.session.Session.create_client()` method.

        :type config: ProcessTransferConfig
        :param config: Configuration for the downloader