0

蟒蛇开发。我有一个概念问题。我正在编写一些屏幕抓取代码,用于从同一网站检索数据,但每次访问服务器的次数为 5,000 次,连接字符串略有不同。我把它写成多线程的,这是我第一次在 python 中使用线程。

就像现在一样,它创建了 100 个线程并运行,但程序永远不会返回(我确实在模块末尾加入了线程)。当我只运行 1,000 个查询时,它确实按预期运行并且一切正常(它返回)。超过 1,000,我在控制台中看到最大重试错误。所以我的问题是...

在多线程上下文中,如何在服务器上每 1,000 次运行暂停一分钟,然后再继续?

我不确定是否应该在模块中使用递增计数器,如果这样做,是否需要使用锁同步访问它?这是利用队列可以做到最好的事情吗?我整整一周都在寻找有关此应用程序的相关信息,而最好的概念方法却让我望而却步。有任何想法吗?提前谢谢了...

4

1 回答 1

0

保留一个 nbThreads 变量,在每个创建线程时增加该变量,并在每个线程进程结束时减少该变量。

while ...
  #Create 1000 threads
  while nbThreads >0:
    time.sleep(2)
  time.sleep(60)

您可以在线程类中添加超时以确保所有线程在一定时间后完成或拦截超时并实际减少 nbThreads

于 2013-11-14T22:16:41.993 回答