为了账号安全,请及时绑定邮箱和手机立即绑定

可以从新进程中的线程访问全局变量吗?

可以从新进程中的线程访问全局变量吗?

江户川乱折腾 2021-12-26 15:12:33
在脚本的主线程中,我设置了一个名为的变量queue并用 URL 填充它。然后我创建了 8 个进程multiprocessing.Process,然后这些进程使用该threading库产生了 10 个线程。在线程工作者(由上述另一个进程产生)中,我有global queue.然后会queue.get()按预期行动吗?我试过了,在某些测试中似乎没问题,而在其他测试中则不然。问题是,可以从另一个进程和线程访问全局变量吗?
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

很难理解你到底在问什么。但是这里有两个主要问题:

可以从另一个进程访问全局变量吗?

不,不是没有某种形式的进程间通信,即使这样,您也会将该变量的副本传递给另一个进程。每个进程都有自己的全局状态。

可以从另一个线程访问全局变量吗?

是的,同一个进程中的线程可以访问全局变量,但是必须保证多线程访问的任何内存的安全。这意味着,线程不应与其他线程同时访问可写内存,否则您可能会面临一个线程写入内存而另一个线程尝试读取它的风险。

回答上面的问题

如果我正确理解设置,您的每个子进程都有自己的全局变量queue。每一个都queues应该只能由在该进程中产生的线程访问。


查看完整回答
反对 回复 2021-12-26
  • 1 回答
  • 0 关注
  • 258 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号