首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用python的“未来”模块的“`ThreadPoolExecutor`”时,数据安全是否得到保障?

在使用python的“未来”模块的“`ThreadPoolExecutor`”时,数据安全是否得到保障?
EN

Stack Overflow用户
提问于 2020-02-17 07:41:04
回答 2查看 624关注 0票数 6

我在寻找这个问题的概念性答案。

我想知道是否在python中使用ThreadPool来执行并发任务,从而保证数据不会损坏;我的意思是多个线程不会同时访问关键数据

如果是这样的话,这个ThreadPoolExecutor如何在内部工作以确保关键数据一次只被一个线程访问?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-17 07:50:05

线程池不能保证共享数据不会损坏。线程可以在任何字节代码执行边界上交换,并且损坏总是有风险的。共享数据应该受到同步资源的保护,例如锁、条件变量和事件。见线程模块文档

concurrent.futures.ThreadPoolExecutor是一个线程池,专门用于concurrent.futures异步任务模型。但是传统线程的所有风险仍然存在。

如果您正在使用python异步模型,则应该在主线程上分派处理共享数据的内容。线程池应该用于自治事件,特别是等待阻塞I/O的事件。

票数 6
EN

Stack Overflow用户

发布于 2020-02-17 07:57:02

如果是这样的话,这个ThreadPoolExecutor如何在内部工作以确保一次只由一个线程访问关键数据?

不,那是你的工作。

map这样的高级方法将使用安全的工作队列,而不是在线程之间共享工作项,但是如果您有其他可以共享的资源,那么池就不知道也不关心,这是您作为开发人员的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60257856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档