0716Semaphore 信号量控制进程同步

from multiprocessing import Process , current_process , Semaphore

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

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

	fp.close()

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

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

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

	fp.close()

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

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

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

	fp.close()

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


def main():
	args = Semaphore(2)

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

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

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


if __name__ == '__main__':
	main()

猜你喜欢

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