下载使用队列扭曲的文件

bdf*_*dfy 4 python twisted

我想使用twisted和(例如)20个客户端线程从队列中下载许多文件.任何例子?

Joc*_*zel 9

from twisted.internet.defer import inlineCallbacks, DeferredQueue

@inlineCallbacks
def worker(queue):
    while 1:
        url = yield queue.get() # wait for a url from the queue

        if url is None: # insert None into the queue to kill workers
            queue.put(None)
            return # done

        data = yield download(url) # download the file
        process(data) # do stuff with it


queue = DeferredQueue() # your queue

# make workers
MAX = 20
workers = [worker(queue) for _ in range(MAX)] 
Run Code Online (Sandbox Code Playgroud)

  • @Glyph:它没有尽可能快地下载(工人等待处理),但是应该有一些并行化,因为20个`worker`. (2认同)
  • @vak:这个"无"可以用来表示工人以受控的方式退出.它有时被称为"毒丸",这里有一个解释:http://java.dzone.com/articles/producers-and-consumers-part-3 (2认同)