Home | Mirror | SearchITEYE 博客 | OSChina 博客 | 51CTO 博客

第 34 章 Library

目錄

34.1. threading
34.2. syslog
34.2.1. udp client
34.2.2. udp server
34.3. Socket
34.3.1. UDP
34.3.1.1. UDP Server
34.3.1.2. UDP Clinet
34.4. Daemon
34.5. python-memcached
34.6. Pyro - Pyro is short for PYthon Remote Objects
34.7. Python Imaging Library
34.8. getopt – Command line option parsing
34.9. syslog
34.9.1. udp client
34.9.2. udp server
34.10. python-subversion
34.11. SimpleHTTPServer
34.12. fuse-python.x86_64 : Python bindings for FUSE - filesystem in userspace
34.13. Network
34.13.1. gevent - A coroutine-based network library for Python
34.14. TUI
34.14.1. Console
34.14.2. urwid
34.14.3. pycdk
34.14.4. python-newt - A NEWT module for Python
34.15. Python-spdylay - Spdylay Python Extension Module

34.1. threading

import threading  
class MyThread(threading.Thread):  
    def __init__(self, name=None):  
        threading.Thread.__init__(self)  
        self.name = name  
      
    def run(self):  
        print self.name  
  
def test():  
    for i in range(0, 100):  
        t = MyThread("thread_" + str(i))  
        t.start()  
  
if __name__=='__main__':  
    test()  	
	

ref: http://www.ibm.com/developerworks/aix/library/au-threadingpython/

	
 #!/usr/bin/env python
import Queue
import threading
import urllib2
import time

hosts = ["http://yahoo.com", "http://google.com", "http://amazon.com",
"http://ibm.com", "http://apple.com"]

queue = Queue.Queue()

class ThreadUrl(threading.Thread):
	"""Threaded Url Grab"""
	def __init__(self, queue):
	  threading.Thread.__init__(self)
	  self.queue = queue

	def run(self):
	  while True:
		#grabs host from queue
		host = self.queue.get()

		#grabs urls of hosts and prints first 1024 bytes of page
		url = urllib2.urlopen(host)
		print url.read(1024)

		#signals to queue job is done
		self.queue.task_done()

start = time.time()
def main():

#spawn a pool of threads, and pass them queue instance 
for i in range(5):
  t = ThreadUrl(queue)
  t.setDaemon(True)
  t.start()
  
#populate queue with data   
  for host in hosts:
    queue.put(host)

#wait on the queue until everything has been processed     
queue.join()

main()
print "Elapsed Time: %s" % (time.time() - start)