首页 > 系统服务 > 详细

多进程5

时间:2021-08-30 01:13:31      阅读:11      评论:0      收藏:0      [点我收藏+]

多进程5

本文展示在多进程中创建与使用共享变量和锁的步骤。

共享变量

import multiprocessing as mp
import time


def job(v, add_num):
    for i in range(10):
        time.sleep(0.1)
        v.value += add_num
        print(v.value)


def by_multiprocess():
    v = mp.Value(‘i‘, 0)
    process1 = mp.Process(target=job, args=(v, 1))
    process2 = mp.Process(target=job, args=(v, 5))
    process1.start()
    process2.start()
    process1.join()
    process2.join()


if __name__ == ‘__main__‘:
    by_multiprocess()
    print(‘over‘)

输出结果:

5
6
77

12
12
1313

1818

19
24
2525

2626

2727

2828

over

代码中设置共享变量v,初始值为0,两个进程分别对它进行10次+1或者+5的操作并打印,从结果来看,两个进程在竞争着操作变量v。

进程的共享变量v和多线程4中的global变量类似。

进程与线程还有一个类似的地方就是锁,以下代码使用了锁:

import multiprocessing as mp
import time


def job(v, add_num, lock):
    lock.acquire()
    for i in range(10):
        time.sleep(0.1)
        v.value += add_num
        print(v.value)
    lock.release()

def by_multiprocess():
    l = mp.Lock()
    v = mp.Value(‘i‘, 0)
    process1 = mp.Process(target=job, args=(v, 1, l))
    process2 = mp.Process(target=job, args=(v, 5, l))
    process1.start()
    process2.start()
    process1.join()
    process2.join()


if __name__ == ‘__main__‘:
    by_multiprocess()
    print(‘over‘)

输出结果:

1
2
3
4
5
6
7
8
9
10
15
20
25
30
35
40
45
50
55
60
over

加上锁后,一个进程执行完毕才会执行其他进程。

多进程5

原文:https://www.cnblogs.com/cxf-tech/p/15202782.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!