首页 > 编程知识 正文

python携程原理,python协程gevent

时间:2023-05-04 02:08:54 阅读:163123 作者:3289

在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知识点的全部内容。 此外,您可以在以下相关文章中找到相关文章进行进一步学习。 谢谢你帮我读。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。