不同线程访问同一字典(只读)
我有一个函数(比如叫 myFunc),它需要一个开始日期和一个结束日期,然后在这个时间段内进行一些操作,处理一些字典里的数据。我想用线程来让这段代码同时运行。
我的 main() 函数会从很多文件中读取数据,并把这些数据存储到字典里。每次我调用 myFunc 时,都会把这些字典和开始、结束日期传进去。当我用多个线程同时调用 myFunc,并传递相同的字典时,会不会出现冲突?这些字典只是用来读取数据,没有写入。
myFunc 会创建很多字典,然后把它们写入到另一个文件中。每个线程生成的输出文件会不一样,但因为所有线程中的字典名字是一样的,会不会有冲突?理论上,我知道线程的概念是只要这些字典不是全局的,就不应该有冲突。但因为这是我第一次尝试使用线程,所以想确认一下。
谢谢
1 个回答
6
使用线程的话,其实你不会遇到什么问题。不过,你也不能实现真正的并行处理。因为在Python中有个叫做全局解释器锁(GIL)的东西,它只允许一个线程在任何时候处理任务。如果你想要真正的并行处理,就得使用多进程模块。这个模块可以让你同时利用机器上的多个处理器。