我什么时候用dummy_threading
?
我曾认为它可能会用模拟线程替换系统级线程,以防 Python 无法使用系统级线程。
但是当我运行这个时:
import dummy_threading as threading
semaphore = threading.Semaphore()
def f(i):
semaphore.acquire()
print i
for i in xrange(10):
threading.Thread(target=f, args=(i,)).start()
for _ in xrange(10):
semaphore.release()
我得到0
了,程序没有终止。不仅如此,Python 还莫名其妙地继续吞噬我电脑的内存,直到它一无所有。
当我运行这个:
import threading
semaphore = threading.Semaphore()
def f(i):
semaphore.acquire()
print i
for i in xrange(10):
threading.Thread(target=f, args=(i,)).start()
for _ in xrange(10):
semaphore.release()
我得到0 1 3 5 7 9 2 4 6 8
了预期。
我一定是误会了dummy_threading
。我什么时候使用它?
仅供参考,我在 Windows 7 和 Fedora 18 上进行了比较,得到了相同的结果。
编辑:但是,以下给出0 1 2 3 4 5 6 7 8 9
:
import dummy_threading as threading
event = threading.Event()
def f(i):
event.wait()
print i
for i in xrange(10):
threading.Thread(target=f, args=(i,)).start()
event.set()
最大的问题是:做dummy_threading
什么,或者什么时候会给出与 相同的行为threading
?