在Python中正确使用互斥锁

在Python中正确使用互斥锁,第1张

在Python中正确使用互斥锁

我不知道您为什么要使用Window的Mutex而不是Python的Mutex。使用Python方法,这非常简单:

from threading import Thread, Lockmutex = Lock()def processData(data):    mutex.acquire()    try:        print('Do some stuff')    finally:        mutex.release()while True:    t = Thread(target = processData, args = (some_data,))    t.start()

但是请注意,由于CPython的体系结构(即Global Interpreter
Lock
),无论如何一次您实际上只能运行一个线程-
如果其中许多线程受I / O约束,这很好,尽管您会想要释放尽可能多的锁,以便I / O绑定线程不会阻止其他线程运行。

对于Python
2.6和更高版本,一种替代方法是使用Python的

multiprocessing
软件包。它镜像了
threading
程序包,但是将创建 可以
同时运行的全新进程。更新您的示例很简单:

from multiprocessing import Process, Lockmutex = Lock()def processData(data):    with mutex:        print('Do some stuff')if __name__ == '__main__':    while True:        p = Process(target = processData, args = (some_data,))        p.start()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5617001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存