Python将simultanoues wgets发送到localhost

时间:2015-07-27 07:22:40

标签: python wget python-multithreading

我编写了一个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请求。

感谢。

1 个答案:

答案 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

请记住,任何类型的并行化都不允许请求到达主机以便您告知它。 某些线程可能在其他线程之前处理。没有简单的方法可以知道调度程序如何处理它们。

但是当你要求并行请求时,我想你已经知道了。