<p><strike>这可能不是完整的答案,因为这是代码的一部分,但可能是一个起点。</strike>使用<code>multiprocessing</code>模块可以创建一个工作线程池,然后使用<code>subprocess</code>模块可以为每个工作线程和<a href="https://stackoverflow.com/questions/2502833/store-output-of-subprocess-popen-call-in-a-string">check the output</a>调用脚本的一个实例:</p>
<pre><code>import multiprocessing as mp
import subprocess as sp
# an example with two runs
commands = ['python test.py', 'python test.py']
# pass the number of threads that will be working
# if the number of threads < len(commands) the exceed
# will run in sequence when some process terminate
pool = mp.Pool(processes=2)
# execute the script calls
res = pool.map(sp.check_output, commands)
print(*[item.decode() for item in res])
pool.close()
</code></pre>
<p>注意:从<code>check_output</code>返回的是一个<code>byte string</code>,因此需要将它转换回<code>string</code></p>
<p>我用以下简单的程序进行了测试:</p>
<pre><code>import time
if __name__ == "__main__":
print("Running an instance at {}".format(time.ctime()))
time.sleep(2)
print("Finished at {}".format(time.ctime()))
</code></pre>
<p>这就是输出:</p>
<pre><code>Running an instance at Thu Oct 11 23:21:44 2018
Finished at Thu Oct 11 23:21:46 2018
Running an instance at Thu Oct 11 23:21:44 2018
Finished at Thu Oct 11 23:21:46 2018
</code></pre>
<p>正如你所看到的,它们同时运行。你知道吗</p>