Threading som |d13m0b foreslår kan du bruke.
Python har en build-in threading module.
Har testet noe kode og forandret så den passer bedere til deg kansje,men ikke sikkert.
Kort forklaring av hvordan dette fungerer.
Jeg kjører lokalt når jeg tester.
Starter server,den vil nå lytte etter klienter.
Server har multi-threading kapasitet.
Starter klient.
Klient vil nå kjøre 5 thread og da motta 5 meldinger(someList) hvor pickle modulen blir brukt.
Hver klient kan nå sende 5 beskjeder til server.
Ja,et eksempel på bruk av thread module.
For database er build-in sqlite grei og bruke.
For på enkel og avansert nettverk styring er
Twisted bra.
Et bilde av hvordan dette ser ut.
http://bildr.no/thumb/560158.jpeg
Kode
## Server.py
import pickle
import socket
import threading
# We'll pickle a list of numbers
someList = [1, 2, 7, 9, 0]
pickledList = pickle.dumps (someList)
# Our thread class
class ClientThread (threading.Thread):
# Override Thread's __init__ method to accept the parameters needed
def __init__ ( self, channel, details ):
self.channel = channel
self.details = details
threading.Thread.__init__ ( self )
def run ( self ):
print 'Received connection:', self.details [0]
self.channel.send (pickledList)
for x in xrange (10):
mes = self.channel.recv (1024)
print mes
self.channel.close()
print 'Closed connection:', self.details [0]
# Set up the server
server = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
server.bind (( '', 2727 ))
server.listen (5)
# Have the server serve "forever"
while True:
channel, details = server.accept()
ClientThread ( channel, details ).start()
Kode
## Client.py
import pickle
import socket
import threading
import time
# Here's our thread:
class ConnectionThread (threading.Thread):
def run (self):
# Connect to the server:
client = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
client.connect (('localhost', 2727 ))
# Retrieve and unpickle the list object
print pickle.loads (client.recv (1024))
# Send some messages
time.sleep(1)
m = raw_input('Message: ') # we can send 5 threads to server
client.send (m)
# Close the connection
client.close()
# Let's spawn a few threads
for x in xrange (5): # we will recive 5 threads from server
ConnectionThread().start()