我正在寻找有关此问题的概念性答案。我想知道是否在python中使用ThreadPool
执行并发任务,保证数据没有损坏,我的意思是多个线程不会同时访问关键数据。
如果是,此ThreadPoolExecutor
在内部如何工作以确保一次仅由一个线程访问关键数据?
线程池不保证共享数据不会损坏。线程可以在任何字节代码执行边界处交换,并且损坏始终是一种风险。共享数据应受到锁,条件变量和事件等同步资源的保护。参见threading module docs
如果是这样,此ThreadPoolExecutor如何在内部工作以确保一次只能由一个线程访问关键数据?
不是,那是你的工作。
map
之类的高级方法将使用安全的工作队列,并且不会在线程之间共享工作项,但是如果您拥有其他可以共享的资源,则池不知道或不在乎,这是您的问题开发人员。