1
Js 2012-10-01 11:54:17 +08:00
赞, 但是有个容易导致结果不一致的情况,毕竟在gevent多个协程里操作不涉及IO的变量是不用加锁的,但是原来不加锁的代码切成线程就很容易出原子性问题
|
2
ayanamist 2012-10-03 15:39:40 +08:00
@Js 你想多了,Python 3.2以前,GIL的粒度大的惊人,在Python内部对象里基本没有锁的问题,所以del a_dict_object[key_name]这样的是线程安全的。
Python的一个tick是很粗的,包含一个Python基本操作,例如上面那样的,连Python的一句dis都算不上。 Python的多线程编程在CPU密集应用上是会大幅度降低速度的,只适合IO密集的应用。 可以看看这两个slides http://www.dabeaz.com/python/GIL.pdf http://www.dabeaz.com/python/NewGIL.pdf |
3
dingyaguang117 2013-11-08 10:04:57 +08:00
@ayanamist 似乎没有那么大粒度吧 我测试过 a+=1 这种都不是一个原子操作
|