Handling Infinite Loops on Server Applications

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Thu May 3 09:14:01 EDT 2007


En Wed, 02 May 2007 21:38:52 -0300, Paul Kozik <zykhou at gmail.com> escribió:

> I'm working with a small server program I'm writing for a small video
> game. The main class constructor starts a thread that handles socket
> connections, which itself starts new threads for each user connection.

And what's the purpose of the main thread then?

> The actual server program itself however needs to wait in the
> background, but continue looping as not to close the running threads.
> The problem is, simply running a [while True: pass] main loop in this
> style eats precious CPU cycles (and for nothing). If it waits for
> input, such as a socket.accept() or raw_input(), this problem does not
> occur (obviously because it's not constantly looping).

Exactly. Use the network handling thread as the main thread, by example.

> What would be the best way to handle this, perhaps in a fashion
> similar to how most server programs are handled (with arguments such
> as [apache start], [apache stop])? Any guides towards this type of
> application development?

See the asyncore module, or any of the predefined servers in the Python  
library.

-- 
Gabriel Genellina



More information about the Python-list mailing list