python devs。我有一个概念性的问题。我正在编写一些屏幕抓取代码,用于检索来自同一网站的数据,但每次都有5,000次点击到服务器,连接字符串略有不同。我把它写成多线程,它是我第一次在python中使用线程。
就像现在一样,它创建了100个线程并运行,但程序永远不会返回(我确实加入了模块末尾的线程)。当我只运行1,000个查询时,它确实按预期运行,一切都很顺利(它返回)。超过1,000,我在控制台中看到最大重试错误。所以我的问题是......
如何在多线程环境中继续之前暂停服务器上的每1,000次运行一分钟?
我不确定我是否应该在模块中使用增量计数器,如果我这样做,是否需要使用锁同步访问它?这可以通过队列最好地完成吗?我整个星期都在寻找关于这个应用程序的相关信息,最好的概念方法让我望而却步。有任何想法吗?非常感谢...
答案 0 :(得分:0)
保留在每个创建的线程中增加的nbThreads变量,并在每个线程进程结束时减少。
while ...
#Create 1000 threads
while nbThreads >0:
time.sleep(2)
time.sleep(60)
您可以在线程类中添加超时,以确保在一定时间后完成所有线程或拦截超时并实际减少nbThreads