擅长:python、mysql、java
<p>这是有效的:</p>
<pre><code>import multiprocessing as mp
queue1 = mp.Queue()
queue2 = mp.Queue()
def f1(q):
x = 5
# do something to a get x
q.put(x)
def f2(in_queue, out_queue):
a = in_queue.get()
b = a + 2
# do something to a, to produce b
out_queue.put(b)
def f3(q):
c = q.get()
print c
f1(queue1)
p1 = mp.Process(target=f2, args=(queue1, queue2))
p1.start()
p2 = mp.Process(target=f3, args=(queue2,))
p2.start()
</code></pre>
<p>您的代码并没有返回您所看到的错误,它返回“f2 not defined”,因为您在生成进程<code>p1</code>,<code>f2</code>尚未定义变量。fork的规则是,在创建时,流程必须看到它们使用的变量,即它们必须在当前范围内。在</p>
<p>清楚地说,在生成进程时,您从父进程继承当前命名空间。在</p>