Python跟踪循环外的循环计数?

时间:2017-01-14 21:58:01

标签: python python-3.x loops

所以我有一个循环运行2次,但我在该循环内有另一个循环运行x次。我需要跟踪循环内部的循环,即使第一个循环完成循环,所以我可以相应地更改代理。

proxyList=[proxy1,proxy2,proxy3,proxy4,proxy5]

#this will be done 2 times
for accts in acctPile:

   with requests.Session() as s:

       for loop,channel in enumerate(channelsss):

           #changes proxies each 7th loop but restarts whenever loop is over :(
           proxies = proxyList[loop // 7 % len(proxyList)]

我面临的问题是第一个循环完成后循环内部循环计数重新启动所以它使用相同的代理。

如何从它离开的位置开始计算,以便它不使用相同的代理?

2 个答案:

答案 0 :(得分:1)

使用其他变量:

_loopCounter = 0
proxyList=[proxy1,proxy2,proxy3,proxy4,proxy5]

for accts in acctPile:
   with requests.Session() as s:
       for loop,channel in enumerate(channelsss):
           proxies = proxyList[_loopCounter // 7 % len(proxyList)]
           _loopCounter += 1

答案 1 :(得分:1)

创建一个生成代理的生成器,然后在循环中使用它。这样两组逻辑就是分开的。

def generate_proxies():
    while True:
        for proxy in [proxy1,proxy2,proxy3,proxy4,proxy5]:
            for i in range(7):
                yield proxy

proxies = generate_proxies()

for accts in acctPile:
   with requests.Session() as s:
       for loop,channel in enumerate(channelsss):
           proxy = next(proxies)
           ...use proxy here...