Sum*_*ron 6 python python-3.x python-multiprocessing
我有一个相当简单的类,类似于:
class Tick:
def __init__():
self.val = Value('i', 0)
self.lock = Lock()
def tick(self):
self.lock().acquire()
try:
self.val.value = self.val.value + 1
finally:
self.lock.release()
Run Code Online (Sandbox Code Playgroud)
我想将它与星图一起使用:
def mp_tick(a, t):
t.tick()
tick = Tick()
with Pool(processes=4) as pool:
pool.starmap(mp_tick, [(i, tick) for i in range(100)]
Run Code Online (Sandbox Code Playgroud)
抛出:
RuntimeError: Synchronized objects should only be shared between processes through inheritance
Run Code Online (Sandbox Code Playgroud)
然而:
RuntimeError: Synchronized objects should only be shared between processes through inheritance
Run Code Online (Sandbox Code Playgroud)
才不是。我知道为什么第二个有效。我不明白为什么第一个失败。
理想情况下,我希望有一个Tick可以传递给多个线程的实例,并Tick处理锁定和设置自己的值。我不希望函数必须假设存在全局变量。
| 归档时间: |
|
| 查看次数: |
2431 次 |
| 最近记录: |