【发布时间】:2015-03-31 09:25:17
【问题描述】:
以下代码返回错误:
local variable 'count' referenced before assignment.
下面是两个函数:
def run():
...
global count
count = 0
with closing(Pool(processes=4)) as pool:
pool.map(run_in_parallel, listOfIds)
pool.terminate()
...
def run_in_parallel(id):
count += 1
if count % 1000 == 0:
print('Processed %d %s' % (count, time.strftime('%x %X')))
# Do main work in parallel
错误只是因为修改语句而弹出。即
count +=1
我在几个地方读到过,在工作进程中修改全局变量不是一个好习惯。但由于 listOfIds 是一个巨大的列表,我需要一些方法来监控进度并偶尔打印到终端。这要怎么做?
我已阅读 StackOverflow 和其他地方的其他帖子,其他问题均未解决上述完全相同的问题。
【问题讨论】:
-
在多处理程序中使用和访问全局变量不会像您期望的那样工作
-
这是一个很好的例子/说明如何实现共享计数器:eli.thegreenplace.net/2012/01/04/…
标签: python parallel-processing global-variables counter python-multiprocessing