0716py:Lock管理子进程同步

from multiprocessing import Process , current_process , Lock

def funca(argl):
	# argl 参数是实例化的Lock
	# 打开一个文件,写入内容,在本函数执行的时候其他进程不能执行
	# Lock实例的acquire()方法,给本进程枷锁,其他进程不能执行
	argl.acquire()
	fp = open("lock.txt","a")

	for x in range(20):
		print("我是函数funca |进程名字",current_process().name,"正在写文件")
		fp.write("AAAAA\n")

	fp.close()

	# 执行完成后,释放锁,其他进程可以执行
	argl.release()

def funcb(argl):
	# argl 参数是实例化的Lock
	# 打开一个文件,写入内容,在本函数执行的时候其他进程不能执行
	# Lock实例的acquire()方法,给本进程枷锁,其他进程不能执行
	argl.acquire()
	fp = open("lock.txt","a")

	for x in range(20):
		print("我是函数funcb |进程名字",current_process().name,"正在写文件")
		fp.write("BBBBB\n")

	fp.close()

	# 执行完成后,释放锁,其他进程可以执行
	argl.release()

def funcc(argl):
	# argl 参数是实例化的Lock
	# 打开一个文件,写入内容,在本函数执行的时候其他进程不能执行
	# Lock实例的acquire()方法,给本进程枷锁,其他进程不能执行
	argl.acquire()
	fp = open("lock.txt","a")

	for x in range(20):
		print("我是函数funcc |进程名字",current_process().name,"正在写文件")
		fp.write("CCCCC\n")

	fp.close()

	# 执行完成后,释放锁,其他进程可以执行
	argl.release()



def main():
	argl = Lock()

	pa = Process(target=funca,name="A进程",args=(argl,))
	pb = Process(target=funcb,name="B进程",args=(argl,))
	pc = Process(target=funcc,name="C进程",args=(argl,))

	pa.start()
	pb.start()
	pc.start()

	pa.join()
	pb.join()
	pc.join()


if __name__ == '__main__':
	main()


猜你喜欢

转载自blog.csdn.net/whqwjb/article/details/81064626