haoningabc 发表于 2013-1-15 01:56:06

一道python的线程题?

bestchenwu写得挺好地,
http://bestchenwu.iteye.com/blog/1063401
又找了一篇ibm的
http://www.ibm.com/developerworks/cn/aix/library/au-threadingpython/

想做1亿次系统调用,比如
import os,timeprint time.time();for i in range(101,1000):    #str1='curl -X PUT http://192.168.1.100:11211/hao'+str(i)+' -d '+'ning'    str1='tcrmgr put -port 11211 192.168.1.100 hao'+str(i)+' ning'    os.system(str1)print time.time();
把1000改成10000000,4G 4核的电脑被我搞死了
问题1:用线程拆分?10000个线程,每个循环10000次?
咋写?嫩行不?
问题2:有没有神码程序监控内存状况的?cpu超过百分之多少自动kill掉,或者能判断python某个线程占用多少资源的东西?等python让人死的时候kill都来不及啊,

--------------------------
http://www.iyouf.info/pyinotify-monitor-filesystem.html
#!/usr/bin/env python#coding=utf-8import osfrompyinotify importWatchManager, Notifier, ProcessEvent,IN_DELETE, IN_CREATE,IN_MODIFYclass EventHandler(ProcessEvent):    def process_IN_CREATE(self, event):      print   "Create file: %s "%   os.path.join(event.path,event.name)    def process_IN_DELETE(self, event):      print   "Delete file: %s "%   os.path.join(event.path,event.name)      def process_IN_MODIFY(self, event):      print   "Modify file: %s "%   os.path.join(event.path,event.name)    def FSMonitor(path='.'):    wm = WatchManager()   mask = IN_DELETE | IN_CREATE |IN_MODIFY    notifier = Notifier(wm, EventHandler())    wm.add_watch(path, mask,rec=True)    print 'now starting monitor %s'%(path)    while True:      try:            notifier.process_events()            if notifier.check_events():                notifier.read_events()      except KeyboardInterrupt:            notifier.stop()            breakif __name__ == "__main__":    FSMonitor()



-----------一下摘抄ibm那个源码-----------
import urllib2import timehosts = ["http://yahoo.com", "http://google.com", "http://amazon.com","http://ibm.com", "http://apple.com"]start = time.time()#grabs urls of hosts and prints first 1024 bytes of pagefor host in hosts:    url = urllib2.urlopen(host)    print url.read(1024)print "Elapsed Time: %s" % (time.time() - start)
蛋疼的ibm文章空格让我调试了半天
#!/usr/bin/env pythonimport Queueimport threadingimport urllib2import timehosts = ["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)    queue.join()main()print "Elapsed Time: %s" % (time.time() - start)

#!/usr/bin/env python#hello_threads.pyimport osimport threadingimport datetimeclass ThreadClass(threading.Thread):    def __init__(self,mycount):      threading.Thread.__init__(self)      self.mycount=mycount    def run(self):      os.system('tcrmgr put -port 11211 10.1.224.171 wtesthao'+str(self.mycount)+' ning')def main():#    now = datetime.datetime.now()    for i in range(100000):      t = ThreadClass(i)      t.start()if __name__=="__main__":    main()
页: [1]
查看完整版本: 一道python的线程题?