国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

一個python多進程計數器的問題

瀏覽:139日期:2022-08-01 11:57:30

問題描述

寫了個多進程的腳本,然后其中有個計數器,大致邏輯如下

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,))

最終程序運行時發現個有趣的問題

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,多一個我能理解,當if co[0] % 10000 == 0判斷時,其他進程已經做了加一操作了,但這個879999少一個,我就有點想不通了?

問題解答

回答1:

滿足打印條件的進程剛要打印,其它進程在做+1操作,取值,+1,賦值回去需要好幾條指令,其實可能出現任何值,因為取值這條指令可以發生在任何時刻。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 阿拉尔市| 江北区| 威宁| 读书| 九江市| 普兰县| 灯塔市| 区。| 库伦旗| 巫山县| 唐海县| 黄骅市| 京山县| 玉龙| 兴宁市| 福清市| 新巴尔虎右旗| 诏安县| 蒙城县| 荥阳市| 九龙县| 常山县| 将乐县| 石嘴山市| 边坝县| 卢氏县| 凉城县| 瓦房店市| 南乐县| 砀山县| 宁武县| 拉萨市| 阿尔山市| 长乐市| 新邵县| 宜阳县| 磴口县| 乳山市| 岳普湖县| 沂南县| 汕头市|