coroutine - 关于python中的协程的变量问题
PHP中文网
PHP中文网 2017-04-18 09:56:00
0
1
367

对于线程来说,可能会有线程安全的问题,比如

total = 0

def do_something():
    global total
    # do something else
    total += 1

这个函数,对全局变量total自增,在多线程的情况下,运行十万次,最终total的结果可能不是100000

而对于单线程中的多个协程来说,可能会出现这种情况吗,比如

total = 0

async def do_something():
    global total
    # do something else
    total += 1
    
def test():
    while True:
        # do something
        asyncio.ensure_future(do_something())

当do_something()在协程中运行十万次时,total的最终结果一定是十万吗?

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(1)
阿神

La coroutine de Python est une pseudo-concurrence, pas une concurrence au vrai sens du terme. Il ne peut y avoir qu’une seule synergie réellement traitée, et si l’une d’elles traite les autres, elles sont toutes dans un état bloqué. Il n'y aura donc aucune confusion. C'est ma compréhension partielle. .

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!