【发布时间】:2021-11-11 04:43:06
【问题描述】:
# src/test.py
import multiprocessing as mp
n = mp.Value('i', 0, lock=True)
def foo(n):
for i in range(10000):
n.value += 1
processes = []
for i in range(2):
p = mp.Process(target=foo, args=[n])
processes.append(p)
for p in processes:
p.start()
for p in processes:
p.join()
print(n.value)
$ python3 src/test.py
17342
$ python3 src/test.py
18485
$ python3 src/test.py
12455
我认为multiprocessing.Value(超过multiprocessing.RawValue)的目的是它有一个锁,使其线程安全。为什么它给了我不同的结果?
【问题讨论】:
-
它给出了不同的结果,因为你给了它不同的值。除非我误解了这个问题。您遗漏了预期的结果,因此我产生了误解。
标签: python python-3.x python-multiprocessing