title: Multiprocessing list of dictionaries dont process duplicate key, value pairs at the same time
body: <p>I am new to multiprocessing and have hit an issue I'm unable to solve. I have a list of dictionaries that looks similar to this (with many more dictionaries), that have duplicate 'device_name' key, value pairs (i.e. - <code>'device_name': 'name1'</code>):</p>
  <pre><code>DEVICE_LIST = [{'device_name': 'name1', 'config': '!\nint  Gi1/0/10\n des TEST INT DESC\n!', 'job_id': 1, 'hostname': 'name1.device.com', 'ip': '1.1.1.1', 'ping_result': 'UP'}, {'device_name': 'name2', 'config': '!\nint  Gi1/0/10\n des TEST INT DESC\n!', 'job_id': 1, 'hostname': 'name2.device.com', 'ip': '2.2.2.2', 'ping_result': 'UP'},  {'device_name': 'name1', 'config': '!\nint  Gi1/0/11\n des TEST INT DESC\n!', 'job_id': 1, 'hostname': 'name1.device.com', 'ip': '1.1.1.1', 'ping_result': 'UP'}]
  </code></pre>
  <p>I am sending the dictionaries to a function that logs into the device and executes configuration changes and captures data related to that transaction. Currently I'm sending the list to the function using <code>pool.map</code> like this:</p>
  <pre><code>import multiprocessing.dummy as mp
  
  # Set pool size
  pool = mp.Pool(10)
  
  # Send the device list to the function using
  CONFIG_RESULTS = pool.map(config_function, DEVICE_LIST)
  </code></pre>
  <p>What I would like to accomplish is if the key, value pair <code>'device_name': 'name1'</code> is already being processed do not process any other instance of <code>'device_name': 'name1'</code> until the first one has finished, as I don't want two configuration activities happening on the same device at the same time. Any thoughts?</p>