我编写了一个python程序,我需要向本地主机发送n个同时发送的wget请求。我使用for循环实现了它,但请求将按顺序发送而不是并行发送。以下是代码段:
1: for i in range(1,clients):
2: for j in range(1,i):
3: host = net.get('h%s'%(j))
4: VAR = host.cmd('wget -O - 10.0.0.254 2>&1')
5: mbps = re.search(r'\d+-\d+-\d+ \d+:\d+:\d+ ,VAR)
我是初学者,对线程知之甚少。
请建议我如何同时发送wget请求。
感谢。
答案 0 :(得分:0)
或者通过线程或线程模块使用线程。将代码放入函数中,使用队列(队列模块中的真实队列或简单列表)并运行循环,以便启动所有需要的线程。
等待所有线程加入主线程并处理队列中的数据。
请注意,不建议一次启动太多线程。例如。如果他们很重,就会有几个小孩子。操作系统甚至可能不允许它。
它也代表多处理模块,因为它也使用线程。
而且,为什么要在使用Python库urllib2时使用wget?
from urllib2 import urlopen
# In the 'J' loop:
u = urlopen("http://10.0.0.254")
response = u.read()
u.close()
# Do something with the response.
而且,在你的' J'循环你有一个格式化错误。你试图将int推入str:
"h%s" % (j)
应该是:
"h%i" % j
请记住,任何类型的并行化都不允许请求到达主机以便您告知它。 某些线程可能在其他线程之前处理。没有简单的方法可以知道调度程序如何处理它们。
但是当你要求并行请求时,我想你已经知道了。