python线程中再起线程_多线程 - Python中的线程化
關(guān)于Kamaelia,上面的答案并沒有真正涵蓋這里的好處。 Kamaelia的方法提供了一個統(tǒng)一的界面,這個界面非常實用,用于處理線程,生成器和處理器。 單個系統(tǒng)中的進程用于并發(fā)。
從根本上說,它提供了一個運行物品的隱喻,它有收件箱和發(fā)件箱。 您將消息發(fā)送到發(fā)件箱,當連接在一起時,消息從發(fā)件箱流向收件箱。 無論您是使用生成器,線程或進程,還是與其他系統(tǒng)通信,這個比喻/ API都保持不變。
“不完美”的部分原因是由于尚未為收件箱和發(fā)件箱添加語法糖(雖然這正在討論中) - 重點是系統(tǒng)的安全性/可用性。
以上面使用裸線程的生產(chǎn)者消費者為例,這在Kamaelia中就是這樣:
Pipeline(Producer(), Consumer() )
在這個例子中,如果它們是線程組件或其他方面并不重要,唯一的區(qū)別是它們之間從使用角度來看是組件的基類。 Generator組件使用列表,使用Queue.Queues的線程組件和使用os.pipes的進程進行通信。
這種方法背后的原因是讓難以調(diào)試錯誤。 在線程 - 或任何共享內(nèi)存并發(fā)性中,您面臨的首要問題是意外破壞共享數(shù)據(jù)更新。 通過使用消息傳遞,您可以消除一類錯誤。
如果你在任何地方都使用裸線程和鎖,你通常會假設(shè)當你編寫代碼時你不會犯任何錯誤。 雖然我們都渴望這一點,但這種情況很少發(fā)生。 通過在一個地方包裝鎖定行為,您可以簡化出錯的地方。 (上下文處理程序有幫助,但無助于上下文處理程序之外的意外更新)
顯然,不是每一段代碼都可以寫成消息傳遞和共享樣式,這就是為什么Kamaelia還有一個簡單的軟件事務(wù)存儲器(STM),這是一個非常巧妙的想法,有一個令人討厭的名字 - 它更像是變量的版本控制 - 即 檢查一些變量,更新它們并提交回來。 如果你發(fā)生沖突,你可以沖洗并重復(fù)。
相關(guān)鏈接:
Europython 09教程
每月發(fā)布
郵件列表
例子
示例應(yīng)用
可重復(fù)使用的部件(發(fā)電機和螺紋)
無論如何,我希望這是一個有用的答案。 FWIW,Kamaelia設(shè)置的核心原因是使并發(fā)更安全。 更容易在python系統(tǒng)中使用,沒有尾巴搖擺的狗。 (即大桶組件
我能理解為什么其他Kamaelia的答案被修改了,因為即使對我來說,它看起來更像是廣告而不是答案。 作為Kamaelia的作者,我很高興看到熱情,但我希望這包含更多相關(guān)內(nèi)容:-)
這就是我的說法,請注意這個答案的定義是有偏見的,但對我而言,Kamaelia的目標是嘗試包裝IMO的最佳實踐。 我建議嘗試一些系統(tǒng),看看哪個適合你。 (如果這不適合堆棧溢出,對不起 - 我是這個論壇的新手:-)
總結(jié)
以上是生活随笔為你收集整理的python线程中再起线程_多线程 - Python中的线程化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高和父元素的高一致_首次:低温熔盐法合成
- 下一篇: 指定jdk8_动图+源码+总结:深度解析