我希望拥有全局对象,所有进程都以最小的锁定进行共享和更新.
import multiprocessing
class Counter(object):
def __init__(self):
self.value = 0
def update(self, value):
self.value += value
def update(counter_proxy, thread_id):
counter_proxy.value.update(1)
print counter_proxy.value.value, 't%s' % thread_id, \
multiprocessing.current_process().name
return counter_proxy.value.value
def main():
manager = multiprocessing.Manager()
counter = manager.Value(Counter, Counter())
pool = multiprocessing.Pool(multiprocessing.cpu_count())
for i in range(10):
pool.apply(func = update, args = (counter, i))
pool.close()
pool.join()
print 'Should be 10 but is %s.' % counter.value.value
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
结果是 - 不是10而是零.看起来该对象的共享值未更新.如何锁定和更新此值?
0 t0 PoolWorker-2
0 t1 PoolWorker-3
0 t2 PoolWorker-5 …Run Code Online (Sandbox Code Playgroud) 有没有办法在Windows上使用Python来执行位于远程Unix机器上的shell脚本?
PS:对于迟到的编辑感到抱歉.我知道帕拉米科,但我想知道是否有办法没有它.首先,可以用subprocess()完成吗?
"命名空间污染"一词的含义是什么?为什么静态方法有助于防止它?
这个问题看起来很相似,但具体与JavaScript有关,答案并没有定义这个术语.