linux并行python,Python 并行任务技巧

看吧!只用4行代码就搞定了!其中三行还是固定写法。使用map方法简单的搞定了之前需要40行代码做的事!为了增加趣味性,我分别统计了不同线程池大小的运行时间。

887c124b09ae5bf243d1eb4897f8a216.png

结果:

395ff504ab89bdeb71bbe80ea3e3a55a.png

效果惊人!看来调试一下确实很有用。当线程池大小超过9以后,在我本机上的运行效果已相差无几。

示例 2:

生成上千张图像的缩略图:

现在咱们看一年计算密集型的任务!我最常遇到的这类问题之一就是大量图像文件夹的处理。

其中一项任务就是创建缩略图。这也是并发中比较成熟的一项功能了。

基础单线程创建过程

50256b8a4dff4058af2cff9df8e286e1.png

作为示例来说稍微有点复杂。但其实就是传一个文件夹目录进来,获取到里面所有的图片,分别创建好缩略图然后保存到各自的目录当中。

在我的电脑上,处理大约6000张图片大约耗时27.9秒.

如果使用并发map处理替代其中的for循环:

91fb22dbda581e61b42403e0c3c2140f.png

只用了5.6 秒!

就改了几行代码速度却能得到如此巨大的提升。最终版本的处理速度还要更快。因为我们将计算密集型与IO密集型任务分派到各自独立的线程和进程当中,这也许会容易造成死锁,但相对于map强劲的功能,通过简单的调试我们最终总能设计出优美、高可靠性的程序。就现在而言,也别无它法。

好了。来感受一下一行代码的并发程序吧。0b1331709591d260c1c78e86d0c51c18.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,可以使用多线程来实现并行任务。引用中的代码演示了如何使用线程实现多任务。首先,创建一个线程对象,并指定要执行的任务。然后,通过调用start()方法来启动线程。主线程可以通过调用time.sleep()来等待一段时间,以便在子线程执行任务期间有足够的时间观察到并行任务的效果。最后,主线程会打印出"主线程中最后一行代码"。这表明主线程在等待子线程执行完毕后才结束。另外,引用中还提供了设置线程为daemon线程的方法,这样当主线程结束时,所有的daemon线程也会被强制结束。 为了避免线程安全问题,可以使用join()方法。引用中的代码演示了如何使用join()方法解决线程安全问题。在这个例子中,我们有两个线程分别对全局变量进行累加操作。如果不使用join()方法,可能会导致数据竞争和不一致的结果。通过调用join()方法,主线程会等待t1线程执行完毕后再继续执行后面的代码。 与线程相比,进程是更大粒度的并发执行单位。进程之间是相互独立的,拥有各自的内存空间。多进程可以通过使用多个进程来实现并行任务。进程之间的通信可以通过进程间通信(IPC)机制来实现。相对而言,线程是更轻量级的并发执行单位,线程之间共享同一进程的内存空间,因此线程间的通信更加方便。但是,由于线程共享内存,因此需要注意线程安全的问题。 总而言之,Python中可以通过多线程和多进程来实现并行任务。选择使用线程还是进程取决于具体的需求和场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值