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()
0716py:Lock管理子进程同步
猜你喜欢
转载自blog.csdn.net/whqwjb/article/details/81064626
今日推荐
周排行