猿问

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

在脚本的主线程中,我设置了一个名为的变量queue并用 URL 填充它。然后我创建了 8 个进程multiprocessing.Process,然后这些进程使用该threading库产生了 10 个线程。

在线程工作者(由上述另一个进程产生)中,我有global queue.

然后会queue.get()按预期行动吗?我试过了,在某些测试中似乎没问题,而在其他测试中则不然。

问题是,可以从另一个进程和线程访问全局变量吗?


江户川乱折腾
浏览 259回答 1
1回答

蓝山帝景

很难理解你到底在问什么。但是这里有两个主要问题:可以从另一个进程访问全局变量吗?不,不是没有某种形式的进程间通信,即使这样,您也会将该变量的副本传递给另一个进程。每个进程都有自己的全局状态。可以从另一个线程访问全局变量吗?是的,同一个进程中的线程可以访问全局变量,但是必须保证多线程访问的任何内存的安全。这意味着,线程不应与其他线程同时访问可写内存,否则您可能会面临一个线程写入内存而另一个线程尝试读取它的风险。回答上面的问题如果我正确理解设置,您的每个子进程都有自己的全局变量queue。每一个都queues应该只能由在该进程中产生的线程访问。
随时随地看视频慕课网APP

相关分类

Python
我要回答