我不知道您为什么要使用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()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)