首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在使用并行编程时更改全局变量

如何在使用并行编程时更改全局变量
EN

Stack Overflow用户
提问于 2018-05-31 19:00:29
回答 1查看 964关注 0票数 0

我在我的代码中使用多进程来做一些并行的事情。实际上,在我的目标的一个简单版本中,我希望通过两个不同的进程并行地更改一些全局变量。

但是在代码运行的最后,从mp.Queue得到的结果是真的,但是变量没有改变。

下面是代码的一个简单版本:

代码语言:javascript
运行
复制
import multiprocessing as mp

a = 3
b = 5

# define a example function
def f(length, output):
    global a
    global b
    if length==5:
       a = length + a
       output.put(a)
    if length==3:
       b = length + b
       output.put(b)


if __name__ == '__main__':

     # Define an output queue
     output = mp.Queue()    

     # Setup a list of processes that we want to run
     processes = []
     processes.append(mp.Process(target=f, args=(5, output)))
     processes.append(mp.Process(target=f, args=(3, output)))

     # Run processes
     for p in processes:
         p.start()

     # Exit the completed processes
     for p in processes:
         p.join()

     # Get process results from the output queue
     results = [output.get() for p in processes]

     print(results)
     print ("a:",a)
     print ("b:",b)

最重要的是答案:

代码语言:javascript
运行
复制
[8, 8]
a: 3
b: 5

如何将进程的结果应用于全局变量?或者,我如何才能像运行简单的威胁代码一样运行多处理的代码并得到答案?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50622756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档