一道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]