擅长:python、mysql、java
<p>我认为错误是您在调用<code>listen</code>之前调用了<code>compute.py</code>。在</p>
<p><code>os.system</code>将阻止您的<em>服务器</em>,直到对<code>python compute.py</code>的调用完成。在</p>
<p>尝试使用<a href="https://docs.python.org/2/library/subprocess.html#popen-constructor" rel="nofollow">subprocess.Popen</a>以非阻塞方式在服务器上并行生成对<code>compute.py</code>的调用。调用<code>subprocess.Popen</code>将在新进程中启动<code>python compute.py</code>,并将继续执行下一行<code>conn, addr = s.accept()</code>)</p>
<pre><code>#!/usr/bin/env python
import socket
import os
import subprocess
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
try:
os.remove("/tmp/SocketTest")
except OSError:
pass
s.bind("/tmp/SocketTest")
s.listen(1)
sp = subprocess.Popen(["/usr/bin/env", "python", "compute.py"])
conn, addr = s.accept()
while 1:
data = conn.recv(1024)
if not data:
break
conn.send(data)
conn.close()
</code></pre>
<p>结果是:</p>
^{pr2}$