这本书应该叫装假的技巧。这个装都是装给别人看的,所以需要一些抓住重点,把握他人的需要。书里对读书、电影、音乐、旅游等很多话题进行了分析,教授了装的要点。
但是想回来着也确实有用,因为这技巧还真的很重要。在学校里总会有几个不怎么学习,但是考试成绩却不错的学生,现在想来一定是掌握了此类的技巧,然后又完美的展示到试卷上了。如果有空可以简单看看。
Monthly Archives: 三月 2012
python 用ping循环监测服务器心跳
循环用ping命令监测服务器是否在运行。本脚本为循环监测,每次监测间隔3秒钟。当错误达到一定数量时,发邮件告知。为了防止脚本错误退出,建议写一个启停的脚本放在crontab中调用,具体做法参见:http://www.simonzhang.net/?p=697
#!/usr/local/bin/python # ------------------------------------------------------------------------------- # Filename: check_ip.py # Revision: 1.0 # Date: 2012-03-20 # Author: simonzhang # web: www.simonzhang.net # Email: simon-zzm@163.com # ------------------------------------------------------------------------------- import pexpect import time import smtplib from email.mime.text import MIMEText #### base set #### 配置要监测的IP地址 check_ip ={"192.168.1.100":0 ,"192.168.1.101":0 ,"192.168.1.102":0} #### 定义几次ping不通发邮件 send_mail_limit = [3,4] #### 发邮件的邮件服务器配置 mail_host = 'smtp.exmail.qq.com' mail_user = 'simon-zzm@qq.net' mail_pwd = 'XXXXXXX' mail_to = "simon-zzm@139.com" mail_cc = "simon-zzm@163.com" #### def mail_warn(error_ip): content = 'Ping IP %s is error!'%error_ip msg = MIMEText(content) msg['From'] = mail_user msg['Subject'] = 'warnning %s'%error_ip msg['To'] = mail_to try: s = smtplib.SMTP() s.connect(mail_host) s.login(mail_user,mail_pwd) s.sendmail(mail_user,[mail_to,mail_cc],msg.as_string()) s.close() except Exception ,e: print e def check(get_ip): try : ping=pexpect.spawn("ping -c1 %s" % (get_ip)) check_result =ping.expect([pexpect.TIMEOUT,"1 packets transmitted, 1 received, 0% packet loss"],2) except : check_result = 0 return check_result def main(): while True : for i in check_ip: check_status = check("%s"%i) if check_status == 1: check_ip["%s"%i] = 0 else : check_ip["%s"%i] +=1 if check_ip["%s"%i] in send_mail_limit : mail_warn("%s"%i) time.sleep(3) if __name__ == "__main__": main()
python 多线程程序,控制线程数
python 控制线程数
用python写多线程的脚本,需要控制线程数。需要自己判断线程是否运行完毕。测试代码如下:
#!/bin/env python # ------------------------------------------------------------------------------- # Filename: my-thread.py # Revision: # Date: 2012-12-19 # Author: simonzhang # web : www.simonzhang.net # Email: simon-zzm@163.com # ------------------------------------------------------------------------------- ####加载多线程模块 import threading ####需要个随机数和延迟,为测试用 import random from time import sleep #### 多线程运行的测试部分。循环3次,每次间隔0到2的随机秒数, #### 等待后打印,运行总次数,线程数和循环值 def test_func(thread_number,sequence): for i in range(3): sleep(random.randint(0,2)) print('run sequence:%s thread %d is running %d ' % (sequence,thread_number,i)) def main(): #### 定义循环序列,就是一个线程池 threads = [] #### 定义总共运行的次数 all_number = 5 #### 定义运行所使用的线程数 thread_lines = 3 #### 定义开始线程数 start_line = 0 #### 首先构建线程池 for i in range(0,thread_lines): t = threading.Thread(target=test_func, args=(i,start_line,)) threads.append(t) start_line +=1 #### 运行第一批线程的任务 for t in threads: t.start() #### 循环运行全部任务 for number_line in xrange(start_line,all_number): #### 初始化当前线程的状态 thread_status = False #### 初始化检查循环线程的开始值 loop_line = 0 #### 开始循环检查线程池中的线程状态 while thread_status == False : #### 如果检查当前线程,如果线程停止,代表任务完成,则分配给此线程新任务, #### 如果检查当先线程正在运行,则开始检查下一个线程,直到分配完新任务。 #### 如果线程池中线程全部在运行,则开始从头检查 if threads[loop_line].isAlive() == False : t = threading.Thread(target=test_func, args=(loop_line,number_line,)) threads[loop_line]=t threads[loop_line].start() thread_status = True else: if loop_line >= thread_lines-1 : loop_line=0 else: loop_line+=1 #### 等待超时 sleep(30) #### 结束所有线程 for number_line in xrange(start_line,thread_lines): thread[number_line].exit() if __name__ == "__main__": main()
本代码存在一个问题,运行完毕后主进程在运行,程序走到下一步,但是还有线程也在运行。所以需要在调用全部完毕后,有一段检查线程是否全部结束,可以使用jion()进行阻塞判断即可。根据实际需要编写。
读《信任代理》
书的副标题是成就网络的影响力。我也是一名从事网络事业的工作者,有得知本书作者是 克里斯。布洛根和朱利恩。史密斯,两位在网络中都是相当有影响力,且本书也被众多网络中的名人所推荐,所以有必要拜读一番。
我对书中提出的两个词很感兴趣,“信任代理”和“网络的土著民”。很多时候某些事物、现象看似很平长,但是真的要总结归纳或者定义却很难。这两个词是对现在从事网络事业人的非官方定义。定义的形象,总结的透彻,也加入了新的理解方式。书中主要讲了信任的重要性,如何获得信任,如果参与和协助他人,如果组织团队,如果创建品牌,如何完善自己的游戏规则。其实网络和日常生活是相同的,网络发展的历史和真实社会的历史也是相同的。只是有了网络,人们的圈子扩大了,交往的范围扩大了。文化、信仰、理念被最大化的融合了。个人感觉在网络与在真实社会中没有什么区别,做有诚信待人,踏踏实实做事这就是做人永远的真理。
推荐朋友们有空读读。
python 脚本不能并行运行
写了个脚本,数据需要定时循环处理,但是不能同时重复处理。也就是说,脚本需要单进程运行。脚本定时运行配置在crontab中。如果在脚本开始写状态文件,运行完成后关闭状态文件也可以,但是如果脚本中途退出,状态文件不会更改,下次运行就不容易判断了。使用进程号来判断就比较准确了,所以写了以下代码。
以下脚本为linux下使用。
#!/usr/local/bin/python # ------------------------------------------------------------------------------- # Filename: my-pid.py # Revision: # Date: 2012-12-19 # Author: simonzhang # Email: simon-zzm@163.com # ------------------------------------------------------------------------------- import os if __name__ == '__main__': try : #首先查看是否有pid文件 #读取pid now_pid = open("./my_pid.pid","rb").read() #通过操作系统命令,统计pid运行的数量 get_count = os.popen("ps -ef|awk ' ''{print $2}'|grep -w %s|wc -l"%now_pid).read() except: #如果没有pid文件,则统计为零 get_count = 0 #判断pid是否在进程中 if int(get_count) > 0 : #如果系统进程中有pid进程,则打印后推出 print "run...." sys.exit() else: #如果没有进程则获得后,保存在pid文件中 w_pid = os.getpid() w_pid_file = open("./my_pid.pid","wb") w_pid_file.write("%s"%w_pid) w_pid_file.close() #运行脚本 main()