我正在尝试提出最佳方法,以最大程度减少我正在构建的数据收集应用程序中的时间损失。以下是一些限制/因素:
考虑到这些因素,我想到了一个解决方案,但希望获得更多的投入。
我已决定以某种方式负载平衡此数据收集。我的想法是这样的:
thread_start_time_factor = 12 seconds / n threads
process_start_time_factor = thread_start_time_factor / m processes
thread_start_time_factor
依次开始。因此,如果我使用的是12个线程,则线程1开始((暂停1秒),线程2开始,...)这种方式现在每1秒钟进行一次数据收集。process_start_time_factor
从理论上讲,每process_start_time_factor
就进行一次数据收集应该。如果采用上述配置,则process_start_time_factor
应该为.250秒。 (如果我的逻辑是错误的,请告诉我)。
现在这是我的问题。这是好的方法吗?我对使用多个进程的想法是实质上在其他进程未捕获时捕获数据。该程序将用Python编写(并不重要)。有没有人遇到过这样的(怪异)数据收集限制的经验,他们必须在框外思考?感谢所有提前答复的人。我肯定可以接受其他解决方案。
答案 0 :(得分:0)
假设您使用的是代理服务器,但未链接到该站点,并且对该问题有些晦涩,则表明该问题与非法行为接壤
也就是说,您尚未提供的一些数字是每个请求花费的时间(例如TTFB,总持续时间,传输的总数据)以及处理响应所需的时间。
假设您在入口处没有进行太多处理,那么我将采用asyncio
(即无进程/线程并行性)方法,因为这样可以更轻松地进行协调。多线程/进程协调很难理解
您应该能够通过单个线程的HTTP请求使1GB的连接饱和,也许只是使用多个进程进行后处理,以免造成障碍