How to synchronize a python dict with multiprocessing

前端 未结 4 1114
执念已碎
执念已碎 2020-12-02 09:28

I am using Python 2.6 and the multiprocessing module for multi-threading. Now I would like to have a synchronized dict (where the only atomic operation I really need is the

4条回答
  •  醉梦人生
    2020-12-02 09:55

    In response to an appropriate solution to the concurrent-write issue. I did very quick research and found that this article is suggesting a lock/semaphore solution. (http://effbot.org/zone/thread-synchronization.htm)

    While the example isn't specificity on a dictionary, I'm pretty sure you could code a class-based wrapper object to help you work with dictionaries based on this idea.

    If I had a requirement to implement something like this in a thread safe manner, I'd probably use the Python Semaphore solution. (Assuming my earlier merge technique wouldn't work.) I believe that semaphores generally slow down thread efficiencies due to their blocking nature.

    From the site:

    A semaphore is a more advanced lock mechanism. A semaphore has an internal counter rather than a lock flag, and it only blocks if more than a given number of threads have attempted to hold the semaphore. Depending on how the semaphore is initialized, this allows multiple threads to access the same code section simultaneously.

    semaphore = threading.BoundedSemaphore()
    semaphore.acquire() # decrements the counter
    ... access the shared resource; work with dictionary, add item or whatever.
    semaphore.release() # increments the counter
    

提交回复
热议问题