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()
posted @ 2021-03-26 12:24  程序员陈师兄cxycsx  阅读(144)  评论(0)    收藏  举报