0

我不明白为什么这个简单的 python 示例的执行时间比它应该执行的时间多 5 倍:/ 我查看了 2 小时的代码,在 Google 等上搜索...我真的没有看到这里的问题。任何帮助,将不胜感激!

import urllib2
import socket
import Queue
import threading

socket.setdefaulttimeout(10)
verbose = True

hosts = ['game1', 'game2', 'game3', 'game4', 'game5', 'game6']

queue = Queue.Queue()

class ThreadUrl(threading.Thread):

    def __init__(self, queue):
        threading.Thread.__init__(self)
        self.queue = queue

    def run(self):
        while True:
            host = self.queue.get()
            url = 'http://{0}.server.com'.format(host)
            f = urllib2.urlopen(url)
            print f.read(1024)
            self.queue.task_done()


def main():

    for i in range(5):
        t = ThreadUrl(queue)
        t.setDaemon(True)
        t.start()

        for host in hosts:
            queue.put(host)

    queue.join()

if __name__ == '__main__':
    main()
4

1 回答 1

5

这是因为对于每个线程,您都将所有主机放入队列中。

于 2013-06-11T19:11:49.947 回答