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()
0716Semaphore 信号量控制进程同步
猜你喜欢
转载自blog.csdn.net/whqwjb/article/details/81065214
今日推荐
周排行