demon14.4-14.5

来源:互联网 发布:windows10 node sass 编辑:程序博客网 时间:2024/06/18 15:36
#!/usr/bin/env python# -*- coding:utf-8 -*-'''多进程锁'''import multiprocessing#lock = multiprocessing.Lock()# lock.acquire()  获取锁# lock.release()  释放锁#也可采用with lock的方式,后续缩进,最后不用再释放锁import timedef add(number,value,lock):    lock.acquire()    try:        print('add{0} is {1}'.format(value,number))        for i in xrange(1,5):            number +=value            time.sleep(1)            print('add{0} is {1}'.format(value,number))    except Exception as e:        raise e    finally:        lock.release()if __name__ == "__main__":    lock = multiprocessing.Lock()    number = 0    p1 = multiprocessing.Process(target=add,args=(number,1,lock))    p2 = multiprocessing.Process(target=add,args=(number,3,lock))    p1.start()    p2.start()    print('end')
#!/usr/bin/env python# -*- coding:utf-8 -*-'''共享内存'''import multiprocessingimport timedef add(number,add_value,lock):    lock.acquire()    try:        print('add int{0} is {1}'.format(add_value,number.value))        for i in xrange(1,5):            number.value += add_value            time.sleep(1)            print('add{0} is {1}'.format(add_value,number.value))    except Exception as e:        raise e    finally:        lock.release()def change(arr):    for i in range(len(arr)):        arr[i] = -arr[i]    print(arr[:])if __name__ == "__main__":    lock = multiprocessing.Lock()    number = multiprocessing.Value('i',0)##设置为共享内存    arr = multiprocessing.Array('i',range(10))    p1 = multiprocessing.Process(target=add,args=(number,1,lock))    p2 = multiprocessing.Process(target=add,args=(number,3,lock))    p3 = multiprocessing.Process(target=change,args=(arr,))    p1.start()    p2.start()    p3.start()    print arr[:]    print('end')