我最近在python3程序中从threading
切换到multiprocessing
。这似乎工作得很好,multiprocessing.Lock()
调用似乎确实成功,因为它应该在我从程序中产生的多个执行线程中。
但是,我的程序本身是从另一个高阶模块调用的,该模块通过普通的Python线程运行我的程序的单独实例。我没有能力重写该模块的代码。
我以前使用threading.Lock()
和threading.RLock()
来管理此环境中的共享代码,我想知道multiprocessing.Lock()
是否与threading.Lock()
或{{{{}}相同1}}在同一进程的不同线程中调用它时。
或者我是否必须实施某种混合锁定机制,以确保我的共享资源在我的组合threading.RLock()
- 和 - multiprocessing
环境中都是安全的?
如果需要混合动力车,以下是否足够? ...
threading
...或者我是否必须实现更复杂的东西,可能是通过我必须编写的新锁定上下文管理器?
提前谢谢。
答案 0 :(得分:0)
我终于找到了问题的答案: Safe to call multiprocessing from a thread in Python?
我现在看到在线程环境中调用multiprocessing.Lock()
将不起作用。我之前在这里发布了一些创建混合multiprocessing/threading
锁定对象的代码,但我现在已经删除了该代码,因为它不正确。