python可以开多少线程,python最大支持多少线程

1,python最大支持多少线程如果加锁同步的话 , 线程多了反而变慢也有可能 。ulimit -s 返回线程栈大小,我的默认是8192, 用内存大小除以它就得到理论上的线程数吧 。python线程太慢了 , 想并发去用greenlet吧,快,写起来还方便 。如果加锁同步的话 , 线程多了反而变慢也有可能 。ulimit -s 返回线程栈大?。?我的默认是8192, 用内存大小除以它就得到理论上的线程数吧 。
2,请教关于python线程的两个问题是这样的 , 去掉GIL没有太大的价值,而且在新版本的python(包括python3k)也是不会取消的 。在1999年Greg Stein和Mark Hammond创建了一个去掉GIL的1.5分支,将GIL替换为细粒度锁 。但是,做过了基准测试之后,结果令人失望,在最好的情况下,单线程的效率只有原来的一半 。另外去掉 GIL 将会造成对解释器的大量的重写,它会使扩展模块变得复杂,一旦扩展有任何的全局可变数据,将不得不为多线程并发调用做好准备 。也可能需要对Python/C API进行改动,它们是为了在一系列的调用中需要对某种对象加锁所需要的 。出于以上考虑,Guido尽管欢迎有人来维护一个无GIL的python分支 , 但他本人不会花太多精力 。最后,尽管不会取消GIL, 但是着并不意味着不能充分利用多cpu,有一下几种方法:1.可以创建多个进程而不是线程,进程数和cpu一样多 。2.使用Jython 或 IronPython,可以得到真正的多线程 。这个问题 也许不是很好说,但是可以这么说python是建立在虚拟机也就是pythonxx.dll上运行的, 所以在这个进程里面所有的线程都是基于轮询方式来调度线程的,当然你也可以开多个实例, 所以python的线程并不不是内核级的多线程 , 也不是os级的 而是基于虚拟机之上的,当然Python多线程这块,我也一直期望他改进,不过作为动态语言,现在这样架构够用 。第二你说的不能更好的利用cpu资源,这个不用担心 , python如果多线程,还是可以充分利用的,我们这边有上万行的Python程序跑起来空运行占几MB内存cpu也不高,如果任务来了,可以占到1-2G的内存 和大量的CPU所以你不必担心不会充分利用cpu的问题 , 这个应该跟你的程序结构和算法 , 以及任务调度的关系的!【python可以开多少线程,python最大支持多少线程】
3 , python py文件同时开两个线程可以吗可以的 。Python 多线程多线程类似于同时执行多个不同程序,多线程运行有如下优点:使用线程可以把占据长时间的程序中的任务放到后台去处理 。用户界面可以更加吸引人 , 这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度程序的运行速度可能加快在一些等待的任务实现上如用户输入、文件读写和网络收发数据等 , 线程就比较有用了 。在这种情况下我们可以释放一些珍贵的资源如内存占用等等 。线程在执行过程中与进程还是有区别的 。每个独立的进程有一个程序运行的入口、顺序执行序列和程序的出口 。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制 。每个线程都有他自己的一组CPU寄存器,称为线程的上下文,该上下文反映了线程上次运行该线程的CPU寄存器的状态 。指令指针和堆栈指针寄存器是线程上下文中两个最重要的寄存器,线程总是在进程得到上下文中运行的,这些地址都用于标志拥有线程的进程地址空间中的内存 。线程可以被抢占(中断) 。在其他线程正在运行时,线程可以暂时搁置(也称为睡眠) -- 这就是线程的退让 。已经进入了python终端,就不能这样打开python文件了 。要将python文件当成外部可执行文件来用 。os.system(command)也就是import osos.system("c:\\python27\\ccc.py")先将终端所在路径切换到python脚本文件的目录下 然后给脚本文件运行权限,一般755就ok , 如果完全是自己的私人电脑,也不做服务器什么的,给777的权限问题也不大(具体权限含义参考chmod指令的介绍,就不赘述了): chmod 755 ./*.py 然后执行 。如果在脚本内容的开头已经给出了类似于如下的注释: #!/usr/bin/env python 那就可以直接在终端里运行: ./*.py 如果没有这个注释 就在终端中执行: python ./*.py 如果是有图形界面的脚本 在前面的chmod之后,直接双击(kde桌面是单击)文件来执行即可 《linux就该这么学》免费实用的linux学习资料

    推荐阅读