<ul>
<li><code>mp.Process</code>s可以被赋予一个<code>name</code>参数,目标
函数<code>myWait</code>可以使用<code>mp.current_process().name</code>进行访问。
所以不需要传递<code>processNb</code>。在</li>
<li>尽量减少进程间通信。而不是传递
格式化字符串通过队列,只需传递字符串的部分
这将在元组中发生变化:<code>(name, wait, startedAt, endedAt)</code>。在</li>
</ul>
<hr/>
<p>所以,你可以用这样一个队列:</p>
<pre><code>import time
import multiprocessing as mp
def myWait(wait, resultQueue):
startedAt = time.strftime("%H:%M:%S", time.localtime())
time.sleep(wait)
endedAt = time.strftime("%H:%M:%S", time.localtime())
name = mp.current_process().name
resultQueue.put(
(name, wait, startedAt, endedAt))
# queue initialisation
resultQueue = mp.Queue()
# process creation arg: (process number, sleep time, queue)
proc = [
mp.Process(target=myWait, name = '0', args=(2, resultQueue,)),
mp.Process(target=myWait, name = '1', args=(1, resultQueue,))
]
# starting processes
for p in proc:
p.start()
for p in proc:
p.join()
# print results
for p in proc:
name, wait, startedAt, endedAt = resultQueue.get()
print('Process %s started at %s wait %s ended at %s' %
(name, startedAt, wait, endedAt))
</code></pre>