python多任务编程-资源抢夺解决
方式一
import multiprocessing
import time
def task(md):
for i in range(100):
md['count'] += 1
print('进程执行完毕...', md['count'])
def main():
manager = multiprocessing.Manager()
m_dic = manager.dict()
m_dic['count'] = 0
# 开启两个进程
p1 = multiprocessing.Process(target=task, kwargs={"md": m_dic})
p2 = multiprocessing.Process(target=task, args=(m_dic, ))
p1.start()
# 等待p1进程执行完毕之后才会往下执行
p1.join()
p2.start()
# 等待p2进程执行完毕之后才会往下执行
p2.join()
print(m_dic)
if __name__ == '__main__':
main()
方式二
采用进程锁
import multiprocessing
import time
def task(md, lock):
for i in range(100):
lock.acquire()
md['count'] += 1
lock.release()
print('进程执行完毕...', md['count'])
def main():
manager = multiprocessing.Manager()
m_dic = manager.dict()
m_dic['count'] = 0
# 创建一个进程锁
lock = multiprocessing.Lock()
# 开启两个进程
p1 = multiprocessing.Process(target=task, kwargs={"md": m_dic, "lock": lock})
p2 = multiprocessing.Process(target=task, args=(m_dic, lock))
p1.start()
p2.start()
p1.join()
print(m_dic)
if __name__ == '__main__':
main()
浙公网安备 33010602011771号