擅长:python、mysql、java
<p><code>multiprocessing</code>基于进程,而不是线程。重要的区别是:每个进程都有一个单独的内存空间,而线程共享一个公共内存空间。第一次创建时,进程<em>可能</em>(取决于操作系统、生成方法等)能够<em>读取</em>父进程具有的相同值,但如果它写入这些值,则只更改本地值,而不更改父进程的副本。只有线程能够访问任意单个共享全局变量,并使其按预期的方式运行。你知道吗</p>
<p>我建议您查看<code>multiprocessing.Pool</code>及其各种方法来分派任务并在以后检索它们的结果,或者如果您必须使用原始的<code>Process</code>,请查看<a href="https://docs.python.org/3/library/multiprocessing.html#exchanging-objects-between-processes" rel="nofollow">various ways to exchange data between processes</a>;您不能只分配给全局变量,因为当新的<code>Process</code>被<code>fork</code>ed/<code>spawn</code>ed时,全局变量将停止共享</p>