1,python为什么aptitute不能用1 指定了.py 文件的执行器之后就可以双击执行(一闪而过是因为执行太快);任何时候都能用命令行执行;没有只能用 python执行的情况 至少我没碰到过 2 可以 只要你的代码严格符合python的格式就行,但是我想不到比回车更方便的换行操作 3 参考这里 ...
2,为什么线程锁没有效果out期望死锁吗?死锁是两个线程各自把持自己的资源,并且等待对方释放资源 。嵌套synchronized就好了synchronized (o1)tryThread.sleep(500);}catch (Exception e)e.printStackTrace();}synchronized(o2)System.println("有 , 我用的是vista,任务管理器--进程--右键关系设置--在多核中选对应的勾即可【python线程锁不起作用,python为什么aptitute不能用】
3,python 多线程ctrlc不起作用我这上不了百度网盘,没法下载,看不了你的代码 。但是可以给你个解决思路,你可以写把进程号传出来 , 到时候外面有个程序来处理 。ctrl C肯定是停不了的 。还有就是Python多线程涉及到线程安全,推荐你使用多进程 。nostmabole手打,望采纳 。代码是这样的:from multiprocessing.dummy import poolpool = pool(10)for i in range(10):pool.apply_async(mytest, args=(test))pool.close()pool.join()
4,请教关于python线程的两个问题这个问题 也许不是很好说 , 但是可以这么说python是建立在虚拟机也就是pythonxx.dll上运行的,所以在这个进程里面所有的线程都是基于轮询方式来调度线程的,当然你也可以开多个实例,所以python的线程并不不是内核级的多线程,也不是os级的 而是基于虚拟机之上的, 当然Python多线程这块,我也一直期望他改进,不过作为动态语言,现在这样架构够用 。第二你说的不能更好的利用cpu资源,这个不用担心,python如果多线程 , 还是可以充分利用的,我们这边有上万行的Python程序跑起来空运行占几MB内存cpu也不高 , 如果任务来了,可以占到1-2G的内存 和大量的CPU所以你不必担心不会充分利用cpu的问题,这个应该跟你的程序结构和算法,以及任务调度的关系的!是这样的,去掉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 , 可以得到真正的多线程 。5,python有了GIL为什么还有线程锁GIL是限制同一个进程中只有一个线程进入Python解释器 。。。。。而线程锁是由于在线程进行数据操作时保证数据操作的安全性(同一个进程中线程之间可以共用信息,如果同时对数据进行操作 , 则会出现公共数据错误)其实线程锁完全可以替代GIL,但是Python的后续功能模块都是加在GIL基础上的,所以无法更改或去掉GIL,这就是Python语言最大的bug…只能用多进程或协程改善,或者直接用其他语言写这部分你自己想想看这个情景线程ab同时操作listlist的[0]初始值为0线程a 操作100次list[0]+=1线程b 操作100次list[0]+=1在线程a 对于 list[0]进行操作时list[0]为0, 还没等线程a完成加一操作, 就被切换到线程b了在线程b 眼里,list[0]还是为0, 于是执行加一操作.再切换回线程a, 继续未完成的加一操作你发现了没!!! 线程ab各对list[0]进行了加一,预期结果是2 但结果还是1python的list不是完全线程安全的.所以加个线程锁就完了.话说为什么, 有了线程锁还需要gil呢?因为, 有了gil, 提供并发就变得很容易. 解释器只要计算每个线程的运行时间就好了时间一到, 将这个线程冻结, 内存管理很简单.等等, 你还是没解释, 如果我已经给线程上了锁, 为什么还是要被gil限制?一向符合人类直觉的python, 有个很反直觉的机制.py的变量a其实不是c系编译语言的变量.python维护着一个字典, 储存着a和对应数值的指针.用某黑python的大牛的话说, python企图用字典装下世界..如果变成真多线程对于这个字典的维护将会很复杂.多个线程真正同时操作一个字典, python引以为傲的字典性能, 估计就没那么强了.就是说, python字典的性能强大,是建立在线程不安全的基础上.而字典在python中的位置又是如此重要, 一个缓慢的字典, 会严重拖慢python的解释速度.多线程操作多个独立字典. 那样还是要同步.那为什么不采用多进程呢? 这就是社区主流的看法.虽然理论上线程成本更低, 但是那样代码就改成面目全非了..
推荐阅读
- eclipse写c语言,eclipse也可以编辑c语言吗
- 微信自己小程序编程,微信小程序自己怎么编辑
- 超级玛丽编程制作过程图片,python怎么做超级马里奥
- 安卓开发用的软件,android常用开发工具有哪些
- ide开发工具是什么意思,ide开发工具指的是什么
- 赵牛牛
- move to ios官网下载,移动飞聊官网下载地址
- c语言初学者刷题网站,本人是才学C语言的菜鸟一枚急需要各种C语言题目来练习求像
- 程序员兼职一个月能赚多少,请教兼职程序员薪水大概多少