PYTHON:多线程创建加速

一般的程序都是顺序执行,资源消耗开销大,我们可使用多线程方式加速,以下为例,仅供参考研究:

"python创建多线程"
import requests
import threading
import time

urls = [
    f'https://www.cnblogs.com/#p{page}'
    for page in range(1,50+1)
]

def craw(url):
    response = requests.get(url)
    print(url,len(response.text))


def single_thread():
    print("single_thread begin!")
    for url in urls:
        craw(url)
    print("single_thread end!")


def multi_thread():
    print("multi_thread begin!")
    threads = []
    for url in urls:
        threads.append(
            threading.Thread(target=craw,args=(url,))
        )
    # 线程开始
    for thread in threads:
        thread.start()

    # 线程等待
    for thread in threads:
        thread.join()
    print("multi_thread end!")

if __name__ =="__main__":
    start = time.time()
    single_thread()
    end = time.time()
    print("single thread:",end - start)
    start = time.time()
    multi_thread()
    end = time.time()
    print("multi_thread:", end - start)

单线程时间结果

多线程时间结果:

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中可以使用多线程来实现并发执行,从而加速程序的运行。多线程可以同时执行多个任务,利用多核处理器的优势来提高程序的执行效率。 在Python中,可以使用内置的 `threading` 模块来创建和管理线程。下面是一个简单的例子,展示了如何使用多线程加速计算任务: ```python import threading # 定义一个计算任务 def calculate_sum(start, end): result = 0 for i in range(start, end): result += i print("Sum from {} to {} is {}".format(start, end, result)) # 创建两个线程来并行执行计算任务 thread1 = threading.Thread(target=calculate_sum, args=(1, 5000000)) thread2 = threading.Thread(target=calculate_sum, args=(5000000, 10000001)) # 启动线程 thread1.start() thread2.start() # 等待线程结束 thread1.join() thread2.join() print("All threads finished.") ``` 在上面的例子中,我们创建了两个线程来并行执行计算任务。每个线程都执行 `calculate_sum` 函数,计算从 `start` 到 `end` 的整数的和。通过启动两个线程,我们可以同时计算两个区间的和,从而加速整个计算过程。 需要注意的是,Python中的多线程并不适用于所有类型的任务。由于Python的全局解释锁 (Global Interpreter Lock, GIL) 的存在,多线程在执行CPU密集型任务时并不能充分利用多核处理器的优势。但是对于I/O密集型任务,如网络请求或文件读写,多线程可以显著提高程序的执行效率。 如果想要进一步提高程序的执行效率,可以考虑使用多进程来实现并发执行。Python中的 `multiprocessing` 模块提供了多进程的支持,可以充分利用多核处理器的优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值