Python multiple threads accessing same file

后端 未结 3 1215
小蘑菇
小蘑菇 2021-01-04 05:52

I have two threads, one which writes to a file, and another which periodically moves the file to a different location. The writes always calls open before writi

3条回答
  •  夕颜
    夕颜 (楼主)
    2021-01-04 06:21

    Locking is a possible solution, but I prefer the general architecture of having each external resource (including a file) dealt with by a single, separate thread. Other threads send work requests to the dedicated thread on a Queue.Queue instance (and provide a separate queue of their own as part of the work request's parameters if they need result back), the dedicated thread spends most of its time waiting on a .get on that queue and whenever it gets a requests goes on and executes it (and returns results on the passed-in queue if needed).

    I've provided detailed examples of this approach e.g. in "Python in a Nutshell". Python's Queue is intrinsically thread-safe and simplifies your life enormously.

    Among the advantages of this architecture is that it translates smoothly to multiprocessing if and when you decide to switch some work to a separate process instead of a separate thread (e.g. to take advantage of multiple cores) -- multiprocessing provides its own workalike Queue type to make such a transition smooth as silk;-).

提交回复
热议问题