Python:多线程下载器相互阻塞

时间:2017-01-10 08:53:49

标签: python multithreading

我有一个无限的多线程下载器,它的工作原理如下:

queue = Queue()  # links for downloading

def downloader(queue):
    while:
        link = queue.get()
        # do download with requests library

for i in range(4):
    task = Thread(target=downloader, args=(queue,))
    task.start()

队列定期填充新数据。但是当我打印出下载的链接时,看起来线程并不是并行工作的,例如:

time 0 - thread 1 - link 1
time 1 - thread 1 - link 2
time 2 - thread 1 - link 3
time 3 - thread 1 - link 4
time 4 - thread 2 - link 5
time 5 - thread 2 - link 6
time 6 - thread 2 - link 7
time 7 - thread 3 - link 8
time 8 - thread 3 - link 9
time 9 - thread 3 - link 10
time 10 - thread 1 - link 11
time 11 - thread 1 - link 12

我希望它更像是:1 2 3 4 1 2 3 4.服务器有4个cpu。

由于

1 个答案:

答案 0 :(得分:0)

仔细检查输出文件以及每个线程写入的位置。写锁可能导致代码比预期更连续地执行。