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

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

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讲师

membalas semua(1)
阿神

Coroutine Python ialah pseudo-concurrency, bukan concurrency dalam erti kata sebenar. Hanya ada satu sinergi yang sebenarnya sedang diproses, dan jika satu sedang memproses yang lain, semuanya berada dalam keadaan tersekat. Jadi tidak akan ada kekeliruan. Ini sebahagian pemahaman saya. .

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan