关于Linux&Python&线程&进程的一点随笔
来源:互联网 发布:如何取消淘宝订单 编辑:程序博客网 时间:2024/05/22 01:28
多任务的并行处理,为防止阻塞,本打算用线程处理,但经实际测试后效果很不理想(当然肯定也和我对线程的不熟悉有关),发现还是多进程稳定可靠:)
PS:Chrome为每个标签页开一个进程就是为了安全和稳定。
上网查阅也经常看到一些说法,如
在 IBM® developerWorks® 的 早期文章 中,我演示了使用 Python 实现线程式编程的一种简单且有效的模式。但是,这种方法的一个缺陷就是它并不总是能够提高应用程序的速度,因为全局解释器锁(Global Interpreter Lock,GIL)将线程有效地限制到一个核中。如果需要使用计算机中的所有核,那么通常都需通过 对 经常使用 fork 操作来实现,从而提高速度。
摘自:http://www.ibm.com/developerworks/cn/aix/library/au-multiprocessing/
由于Python中极具争议的GIL机制,使线程成为Python的一个弱项(当然相对于C/C++、Java这些语言来说)。
延伸阅读:线程安全及Python中的GIL
而且据说在Linux下,由于内核机制的原因,线程貌似确实没有进程使用的广。
同一件任务,为了充分利用CPU调高处理效率,一般Linux下的程序如果跑多线程,线程数会和CPU数量密切相关。例如:4核CPU,1核给主线程,还剩3核所以一般只需另起三个线程。而windows下这种情况一般会开大量线程来处理。厄……我目前的理解是这样的,不知道对不对,而且具体差别的底层原因也没有想明白~_~
Python 2.6中引入了新的多进程处理模块 multiprocessing,据说灰常牛逼。
刚刚接触,也没有太深入了解。
内部貌似直接解决了僵尸问题,这个倒是蛮人性的:D。
另外,测试中还发现一个点:单例模式在多线程中依然有效。
由于成员变量保存在堆里,参数变量保存在栈里。
对线程来说,栈是独立的,而堆还是共享的。
所以……应该是这样的吧~
嗯,就这么多了,不对之处恳请指正:)
- 关于Linux&Python&线程&进程的一点随笔
- 关于进程和线程的一点理解
- 关于进程和线程的一点小知识~
- Linux进程与线程学习随笔
- 关于XML注释的一点随笔
- 关于游戏开发的一点随笔
- 关于Linux的进程和线程
- 关于linux进程、lwp、线程的理解
- 关于linux的进程和线程
- 关于Linux的进程和线程
- 关于Linux的进程和线程
- 关于Linux的进程和线程
- 关于Linux的进程和线程
- 关于Linux的进程和线程分析
- 关于linux进程间信号量的一点测试
- linux C中关于进程控制随笔
- 请问一点关于linux下线程的问题
- Linux内核链表的一点随笔
- Filter实现过滤非法文字例子
- 从新开始
- 从原字符串中找到指定的字符串,替换成另外的字符串
- CSDN久闻大名
- 关于qt中的顶置问题 转载小窦同学的博文
- 关于Linux&Python&线程&进程的一点随笔
- Linux 下 Qt 4.6.0 嵌入式开发环境的搭建、移植 转自紫侠大哥的博文
- javascript li添加 移除
- 简析Web2.0的8个关键词
- 普通Java类获取Spring的Bean的方法
- PHP 使用流方式下载文件与 UTF-8 的 BOM 问题
- JSF中进行验证的方法
- 谈谈AJAX的安全性
- 会计还是计算机软件?