擅长:python、mysql、java
<p>这不是一个答案,只是一个扩展的评论。请运行此程序并告诉我们您得到的输出(如果有的话):</p>
<pre><code>from multiprocessing import Process, Queue
class Worker(Process):
def __init__(self, inputQueue, outputQueue):
super(Worker, self).__init__()
self.inputQueue = inputQueue
self.outputQueue = outputQueue
def run(self):
for i in iter(self.inputQueue.get, 'STOP'):
# (code that does stuff)
1 / 0 # Dumb error
# (more code that does stuff)
self.outputQueue.put(result)
if __name__ == '__main__':
inq, outq = Queue(), Queue()
inq.put(1)
inq.put('STOP')
w = Worker(inq, outq)
w.start()
</code></pre>
<p>我得到:</p>
<pre><code>% test.py
Process Worker-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/home/unutbu/pybin/test.py", line 21, in run
1 / 0 # Dumb error
ZeroDivisionError: integer division or modulo by zero
</code></pre>
<p>你什么也得不到我很惊讶。</p>