【python】多线程/进程之queue类(put/get方法)

queue提供了一种适用于多线程编程的FIFO(先进先出)实现,可用于在生产者和消费者之间线程安全地传递信息或数据,因此多个线程可以共用一个queue实例。
以下为queue的相关用法:

from multiprocess import Queue
'''queue模块中的常用方法'''
Queue.Queue(maxsize=0)  # FIFO,若是maxsize小于1 就表示队列长度无限
Queue.qsize()   # 返回队列的大小
Queue.empty()   # 若是队列为空,返回Ture,反之为False
Queue.full()    # 若是队列满了,返回Ture,反之为False
Queue.get([block,[timeout]])  # 读队列,timeout为等待时间
Queue.put(item,[block,[timeout]])  # 写队列,timeout为等待时间
Queue.Queue.clear()  # 清空队列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以使用Python中的多线程和队列来实现多线程下载。下面是一个简单的示例代码: ```python import threading import queue import requests def download_file(url, save_path): response = requests.get(url) if response.status_code == 200: with open(save_path, 'wb') as file: file.write(response.content) print(f"Downloaded {save_path}") else: print(f"Failed to download {url}") def worker(queue, save_dir): while not queue.empty(): url, filename = queue.get() save_path = f"{save_dir}/{filename}" download_file(url, save_path) queue.task_done() def main(): url_list = [ ('http://example.com/file1.txt', 'file1.txt'), ('http://example.com/file2.txt', 'file2.txt'), ('http://example.com/file3.txt', 'file3.txt') ] save_dir = 'downloads' # 创建队列并将下载任务放入队列 download_queue = queue.Queue() for url, filename in url_list: download_queue.put((url, filename)) # 创建多个线程来处理下载任务 num_threads = 3 for _ in range(num_threads): thread = threading.Thread(target=worker, args=(download_queue, save_dir)) thread.start() # 等待所有线程完成 download_queue.join() if __name__ == '__main__': main() ``` 上述代码中,`download_file` 函数用于实际的文件下载操作。`worker` 函数作为线程的执行函数,不断从队列中获取下载任务并执行。`main` 函数创建线程、队列,并将下载任务放入队列,然后等待所有任务完成。 这个例子中,我们创建了一个包含3个线程的线程池,每个线程从队列中获取下载任务并执行。你可以根据需要调整线程数量和下载任务列表。 希望这可以帮助到你!如果有任何问题,请随时问我。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值