Python 创建10个Tor回路实例的有效方法

Python 创建10个Tor回路实例的有效方法,python,sockets,ssl,connection,Python,Sockets,Ssl,Connection,我想做的是创建一个快速的方法,我可以建立10个电路,跳数将始终是相同的,但我需要他们有一个新的sock连接。(Tor中的电路就像一个独特的连接) 我的标准代码是: circ_to_ip= TorCircuit(ssl_sock) create_circuits(circ_to_ip, hops_in_circ) 这将创建一个名为circ\u to\u ip的电路,然后我可以通过它创建一个电路,circ\u to\u ip`创建一个新的sock连接 我尝试了下面的代码: n = 1 while

我想做的是创建一个快速的方法,我可以建立10个电路,跳数将始终是相同的,但我需要他们有一个新的sock连接。(Tor中的电路就像一个独特的连接)

我的标准代码是:

circ_to_ip= TorCircuit(ssl_sock)
create_circuits(circ_to_ip, hops_in_circ)
这将创建一个名为
circ\u to\u ip
的电路,然后我可以通过它创建一个电路,circ\u to\u ip`创建一个新的sock连接

我尝试了下面的代码:

n = 1
while n < 10:

    n= TorCircuit(ssl_sock)
    create_circuits(n, hops_in_circ)
    print "circuit",n 
    n = n + 1 
sys.exit(0)
谢谢:)

您的问题是当前正在用新电路覆盖循环计数器(
n

相反,您要做的是将这些电路存储在存储库中。此外,您可能希望使用
for
循环,而不是
while
循环:

storage=[]#存储所有电路的空列表
对于范围(10)内的n:
电路=TorCircuit(ssl_sock)
创建回路(回路、跃点回路)
打印“电路”,电路
存储。附加(电路)#将电路添加到列表中

你考虑过一个新的吗?!是的,但是这是最有效的方法吗?这个例子是10,但是大小会动态地是的,好的,列表可以在长度上变化,你可能想考虑将创建代码打包在一个函数中;然后你的循环只调用该函数10次,并将结果累加……在这一点上,将其转换为一行列表理解是很简单的。此外,作为一般提示:当你遇到“当n被赋值为TorCircuit时,它将成为一个实例而不是int,因此失败”这样的问题时,最简单的答案是:“不要这样做”。只要对循环计数器int使用不同的变量名-
n
,对
TorCircuit
使用不同的变量名-
circuit
,问题就解决了。
TOR_CIRCID_COUNTER = 1
class TorCircuit():
    def __init__(self, sock):
        global TOR_CIRCID_COUNTER
        self.hops = []
        self.circId = TOR_CIRCID_COUNTER
        TOR_CIRCID_COUNTER+=1
        self.socket = sock
        self.tempX = 0
        self.packetSendCount = 0
        self.cookie = []