Difference between revisions of "Python-examples"
From Bashlinux
(talk) |
|||
Line 1: | Line 1: | ||
__NOTOC__ |
__NOTOC__ |
||
= Python: Examples = |
= Python: Examples = |
||
+ | == How to write a simple server and client in Python == |
||
− | == Server/Client == |
||
Simple Server/Client communication, communication data is text. |
Simple Server/Client communication, communication data is text. |
||
Line 43: | Line 43: | ||
− | == |
+ | == How to create a subprocess in a thread with Python == |
How to call an external command with `Popen`, a subprocess, inside of a thread. |
How to call an external command with `Popen`, a subprocess, inside of a thread. |
||
Revision as of 15:16, 4 June 2012
Python: Examples
How to write a simple server and client in Python
Simple Server/Client communication, communication data is text.
Server
import SocketServer class EchoRequestHandler(SocketServer.BaseRequestHandler): def setup(self): print self.client_address, 'connected!' self.request.send('hi ' + str(self.client_address) + '\n') def handle(self): while 1: data = self.request.recv(1024) self.request.send(data) if data.strip() == 'bye': return def finish(self): print self.client_address, 'disconnected!' self.request.send('bye ' + str(self.client_address) + '\n') #server host is a tuple ('host', port) server = SocketServer.ThreadingTCPServer(('localhost', 5000), EchoRequestHandler) server.serve_forever()
Client
import socket sock = socket.socket(socket.AF_INET, sock.SOCK_STREAM) sock.connect(('localhost', 5000)) print sock.recv(1024) sock.send('bye')
How to create a subprocess in a thread with Python
How to call an external command with `Popen`, a subprocess, inside of a thread.
import threading import subprocess class MyClass(threading.Thread): def __init__(self): self.stdout = None self.stderr = None threading.Thread.__init__(self) def run(self): p = subprocess.Popen('rsync -av /etc/passwd /tmp'.split(), shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) self.stdout, self.stderr = p.communicate() myclass = MyClass() myclass.start() myclass.join() print myclass.stdout