在python中进行协作时使用同步锁定的实例
asyncio库使用单线程实现协程,但同时运行,无序运行。 可以说是单线程的调度系统。 此外,由于运行时延迟和I/O中断等因素,如果每个协议都是同步的,则必须使用一些同步对象来实现。
例如,asyncio定义了一个锁定对象Lock,一次只能允许一个ACCOM访问共享资源。 如果多个协和式计算机尝试访问,它们将被阻止。 这意味着,如果一个协同学没有释放此锁,另一个协同学就无法访问共享资源。
例如:
import asyncio
导入功能工具
defunlock(lock ) :
打印(callbackreleasinglock ) )
lock.release (
asyncdefcoro1(lock ) :
打印(coro1waitingforthelock ) )
with await lock:
打印(coro 1加密锁定) )
打印(coro1released lock ) )
asyncdefcoro2(lock ) :
打印(coro2waitingforthelock ) )
await lock
try:
打印(coro 2加密锁定) )
finally:
打印(coro2released lock ) )
lock.release (
异步定义(loop ) :
# Create and acquire a shared lock。
lock=asyncio.Lock (
打印(acquiringthelockbeforestartingcoroutines ) )
await lock.acquire (
print (lock acquired : (}.format ) lock.locked ) )
# scheduleacallbacktounlockthelock。
LOOP.call_later(0.1,functools.partial(unlock,lock ) )
# runthecoroutinesthatwanttousethelock。
打印(waiting for coroutines ) )
awaitasyncio.wait([coro1(lock ),coro2) lock、
event _ loop=async io.get _ event _ loop ()
try:
event _ loop.run _ until _ complete (main (event _ loop ) )
finally:
event_loop.close (
输出结果如下。
acquiringthelockbeforestartingcoroutines
锁定: true
waiting for coroutines
coro1 waiting for the lock
coro2 waiting for the lock
呼叫释放锁定
coro 1加密锁定
核心1释放锁定
coro 2加密锁定
coro 2发布锁定
以上python中康科德使用同步锁Lock的代码分析,是编辑与大家共享的全部内容。 希望能作为参考。 另外,我希望很多人能支持周期农户。
以上就是这次给大家总结的java知识点的全部内容。 此外,您可以在以下相关文章中找到相关文章进行进一步学习。 谢谢你帮我读。