|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Python3005 于 2020-3-10 18:09 编辑
- import multiprocessing as mp
- import time
- def test(num, value):
- time.sleep(1)
- value.value += num
- print(value.value)
- def multip():
- value =mp.Value('i')
- pool = mp.Pool()
- for each in range(32):
- pool.apply_async(func = test, args =(each, value))
- pool.close()
- pool.join()
- return value.value
复制代码
请问1:为何print命令不起作用?
2:value.value最后返回的是0,为何没有叠加?
进程池内存共享数据使用 Manager吧。
- from multiprocessing import Pool,Manager
- def Func1(a):
- a.value += 1
- print(a.value)
- if __name__ == '__main__':
- manager = Manager()
- num = manager.Value('i', 1)
- pool = Pool()
- for each in range(32):
- pool.apply_async(func = Func1, args =(num,))
- pool.close()
- pool.join()
- print (num.value)
- input()
复制代码
|
|