六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 55|回复: 0

一道python的线程题?

[复制链接]

升级  0.65%

321

主题

321

主题

321

主题

探花

Rank: 6Rank: 6

积分
1013
 楼主| 发表于 2013-1-15 01:56:06 | 显示全部楼层 |阅读模式
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 osfrom  pyinotify import  WatchManager, 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()
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表