之前寫過一篇通過佇列、池來持續追加任務的方式:[url]
今個兒重新咀嚼了下,發現gevent的pool似乎可以達到真正意義上的任務追加。
這裡先重新簡單的闡明下「任務」這個概念,相對於上次那篇,相對巨集觀了些:
就是greenlet!(不熟悉的可以參看下gevent的文件[url]
先例項化:
g = pool.pool()
通過g.add(),g.spawn(),就可以持續追加任務入池,在建立pool時,可以設定size,不過這裡似乎有個bug,設定了size後,似乎不能在子任務中再新增新任務進任務表。
下面給個demo:
from gevent import pool
g = pool.pool()
def a():
for i in xrange(100):
g.spawn(b)
def b():
print 'b'
g.spawn(a)
g.join()
相較於上次那篇,可以做更繁複的事了,不過,根本上而言,一次做一件事 才是王道啊。
gevent 任務的持續追加和執行
剛開始接觸gevent,特喜歡其中coroutine的輕便。前兩天一直糾結於如何進行任務追加,目前摸索的情況是gevent似乎並不支援coroutine的追加,因為一直限制在這種想法中,遲遲無法邁步。看到有同事玩多執行緒,才恍然,所謂任務,無非就是對擁有特定格式的資料進行解析 執行,既然無法追加co...
mongos分片集群管理和運維(持續更新)
mongo 3.2之後,config server允許配置成副本集模式,這時必須使用wiredtiger引擎。檢查負載均衡器是否啟用,sh.status 也能看 currently enabled 檢查負載均衡器是否在負載均衡中,sh.status 也能看 currently running sh....
CSV的多行寫入和迴圈追加
def writ in csv global lats global lons global soil m 三個全域性變數用於存放經緯度,土壤數值 count 0with open r hecdata pm.csv a newline as f a表示在文末追加,newline用於去除間隔的空行 w...