fkjj.net
当前位置:首页 >> python多线程没用 >>

python多线程没用

线程主要用于异步操作.只要有异步的IO,或者是异步的操作,等待都可以用线程.但是python的线程不足够安全.同时它还有GIL的问题.线程的退出也不太容易.所以在python里经常用进程代替线程.但是如果并发内容太多,只能用多进程+多线程方式.总体来讲.只要用法正确.python的线程还是很可靠的.起动和完成几万次线程.一次不出错,也是有可能的.典型的用法是,在GUI后面,做一些后台操作;多线程网络操作;后台监控某个事件;队列操作等 .

因为python的全局解释器锁(global interpreter lock,gil)强制要求python只能在一个解释器中进行,也就是说即使你有多个处理器,python也只能使用其中的一个,线程实际上是在串行运行.如果只有一个处理器,那么python的线程和其他语言没

1. GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定.2. 每个CPU在同一时间只能执行一个线程在单核CPU下的多线程其实都只是并发,不是并行,并发和并行从宏观上来讲都是同时处理多路请求的概念.但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生.

因为python的底层实现GIL对于多线程的支持并不好.还是只使用CPU的一个核,效率不高 如果是多进程的话,可以充分利用CPU,就是资源可能会用的多一点

用pypy执行py脚本比默认的快.python不支持多cpu,多线程不好用.实在不行多进程吧

python的多线程建议在IO密集的情况下使用,反过来说如果是CPU密集的情况下就不建议使用多线程了,这个时候就需要使用多进程

你的主线程在这个线程结束前就已经退出了try this:from threading import Threadflag = 0def control(): while 1: global flag flag = ord(raw_input()) print 'hello !'if __name__ == '__main__': try: Thread(target=control, args=()).start() except Exception, errtxt: print errtxt

监控一个信号就起一个线程与进程处理.这样的逻辑是不太合适的.所有的资源都是有限的,如果这样浪费很快会资源管理失控.常规的做法是起一个线程池,或者是进程池. 使用线程还是进程取决于你处理的信号的类型.如果计算量大,则需

基本功能可用,甚至提供了多线程和多进程工具.可以说python的并行库覆盖面比较全面缺点是文档不够详细不便于学习熟练不是鸡肋,.你这问题才是鸡肋

我觉得其实并不算是鸡肋.虽然说,Python 中的多线程不能真正的利用多个核心,CPU密集的情况也是解决不了的.但是对于I/O密集的任务还是可以有效处理的.而通常情况下,网络I

网站首页 | 网站地图
All rights reserved Powered by www.fkjj.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com