首页 > 解决方案 > ThreadPoolExecutor 和利用网络的子进程之间的竞争条件

问题描述

我有一个脚本,它由 2 个进程组成,用于下载和过滤/保存响应:

我遇到的问题是,一旦进程 B 从队列中删除了一个项目,它就会开始过滤固定宽度的响应并写入文件,但在它可以写入文件之前进程 A 会获得控制权。我所说的“控制”是什么意思?好吧,进程 B 写入响应的位置位于网络驱动器上,该驱动器与进程 A 中发生的下载位于同一网络管道上;更糟糕的是,带宽限制为 100Mbps(不是 MBps)。

最终结果是,当执行程序中的一个线程开始接收响应时,进程 A 似乎获得了“网络优先级”(有问题的 Web 服务不允许响应流,因此需要下载)。

通过同一网络下载和写入文件时,有没有办法在不恢复同步处理的情况下防止这种情况?

标签: pythonwindowsconcurrencyrace-condition

解决方案


推荐阅读