一個python多進(jìn)程計數(shù)器的問題
問題描述
寫了個多進(jìn)程的腳本,然后其中有個計數(shù)器,大致邏輯如下
def worker(co): # working co[0] += 1 if co[0] % 10000 == 0:logging.info('Parsed {}'.format(co[0]))def main(): co = Manager.list() co[0] = 1 pool = Pool() for i in range(10):pool.apply_async(worker, (co,))
最終程序運(yùn)行時發(fā)現(xiàn)個有趣的問題
INFO: 2017-04-11 16:42:19,288 - 13582 - Parsed 879999INFO: 2017-04-11 16:42:19,292 - 13583 - Parsed 880000INFO: 2017-04-11 16:42:19,295 - 13593 - Parsed 880001INFO: 2017-04-11 16:42:19,297 - 13597 - Parsed 880001
這里的880001,多一個我能理解,當(dāng)if co[0] % 10000 == 0判斷時,其他進(jìn)程已經(jīng)做了加一操作了,但這個879999少一個,我就有點(diǎn)想不通了?
問題解答
回答1:滿足打印條件的進(jìn)程剛要打印,其它進(jìn)程在做+1操作,取值,+1,賦值回去需要好幾條指令,其實(shí)可能出現(xiàn)任何值,因?yàn)槿≈颠@條指令可以發(fā)生在任何時刻。
相關(guān)文章:
1. PHPExcel表格導(dǎo)入數(shù)據(jù)庫怎么導(dǎo)入2. 運(yùn)行python程序時出現(xiàn)“應(yīng)用程序發(fā)生異常”的內(nèi)存錯誤?3. html - 網(wǎng)頁的a標(biāo)簽到底要不要寫上域名?4. css - 移動端 盒子內(nèi)加overflow-y:scroll后 字體會變大5. MySQL中無法修改字段名的疑問6. html5 - 前端面試碰到了一個緩存數(shù)據(jù)的問題,來論壇上請教一下7. macos - 無法source activate python278. python - sqlalchemy更新數(shù)據(jù)報錯9. 我在導(dǎo)入模板資源時遇到無法顯示的問題,請老師解答下10. javascript - 添加一個tr標(biāo)簽到table標(biāo)簽里,在控制臺顯示table標(biāo)簽時,有2個子元素?我想要的是tr標(biāo)簽包含到table標(biāo)簽里面

網(wǎng)公網(wǎng)安備