![](/img/trans.png)
[英]How do I run a python script in parallel with different arguments in linux?
[英]How to run an instance of a python script with arguments in parallel?
我正在尝试让Script(flowcheck.py)作为实例运行,以便如果客户端快速连续发送多个请求,则脚本不会挂起并等待上一个请求完成。
有没有一种方法可以让服务器仅运行脚本+参数的实例而不监视它,然后返回侦听下一个请求?
服务器代码
#!/usr/bin/env python
import SocketServer
import flowcheck
import os
class MyTCPHandler(SocketServer.BaseRequestHandler):
def handle(self):
# self.request is the TCP socket connected to the client
self.data = self.request.recv(1024).strip()
print "{} wrote:".format(self.client_address[0])
print self.data
flowcheck.flow(self.data)
if __name__ == "__main__":
HOST, PORT = "", 5007
# Create the server, binding to localhost on port 5007
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
server.serve_forever()
客户代码
#!/usr/bin/env python
import socket
import sys
HOST, PORT = "192.168.8.201", 5007
data = " ".join(sys.argv[1:])
# Create a socket (SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# Connect to server and send data
sock.connect((HOST, PORT))
sock.sendall(data + "\n")
finally:
sock.close()
print "Sent: {}".format(data)
脚本
#!/usr/bin/env python
import sys
import time
#data = " ".join(sys.argv[1:])
def flow(data):
var=0
while var<3:
print "FlowCheck",data,var
var = var +1
time.sleep(5)
不用导入脚本,而是使用Popen
import subprocess
Popen
以在后台运行脚本实例并继续接收请求。
#!/usr/bin/env python
import SocketServer
import os
import subprocess
class MyTCPHandler(SocketServer.BaseRequestHandler):
def handle(self):
# self.request is the TCP socket connected to the client
self.data = self.request.recv(1024).strip()
print "{} wrote:".format(self.client_address[0])
print self.data
var1 =self.data
subprocess.Popen([ "python", "flowcheck.py",var1])
更改为脚本以使用import sys
接受系统参数
#!/usr/bin/env python
import sys
import time
print "start"
data = sys.argv[1]
def flow(data):
var=0
while var<3:
print "FlowCheck",data,var
var = var +1
time.sleep(5)
flow(data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.