我想了解與低於2的代碼片段會發生什麼 -deferToThread VS遞延()
代碼片段#1
from twisted.internet import threads, defer, reactor
def proc1(a):
while True:
print "Proc----------1"
def proc2(a):
while True:
print "Proc----------2"
def proc3(a):
while True:
print "Proc----------3"
d1 = threads.deferToThread(proc1)
d2 = threads.deferToThread(proc2)
d3 = threads.deferToThread(proc3)
reactor.run()
我的理解是所有的線程平行運行,並輸出=>所有的特效的標準輸出混合
剪斷#2
from twisted.internet import threads, defer, reactor
def proc1(a):
while True:
print "Proc----------1"
def proc2(a):
while True:
print "Proc----------2"
def proc3(a):
while True:
print "Proc----------3"
d1 = defer.Deferred()
d2 = defer.Deferred()
d3 = defer.Deferred()
d1.addCallback(proc1)
d2.addCallback(proc2)
d3.addCallback(proc3)
d1.callback('a')
d2.callback('a')
d3.callback('a')
reactor.run()
對於這個片段 - 每個延遲迴調一個接一個地觸發,並且就輸出而言,只有proc1 stdouts會無限期地傾倒。
如果我錯了,請糾正我的錯誤。所以基本上我想要理解和確認的是延遲對象被一個接一個地觸發,而deferToThread按名稱線程並行運行。
deferToThread使這些特效運行平行是什麼呢? @jean – deeshank
我關心的是deferToThread函數是否允許你並行運行多個線程? – deeshank
'deferToThread'使用stdlib'threading'模塊。線程的行爲與在Python中始終表現的線程完全相同。 –