【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
在windows上面编程其实不复杂,特别是python这一类的脚本语言。如果代码本身是以socket为主的应用,那么使用python就再合适不过了。不过和linux稍微有点区别的是,windows下面的ctrl+c无法像linux一样,被当做信号进行捕捉。在这一点上面需要稍微注意一下。所以,对于我自己来说,一般用raw_input和except的方法进行处理。
#!/usr/bin/python
import os
import sys
import re
import time
import threading
lock = threading.Lock()
g_exit = 0
def calculate(data):
cnt = 0
for i in range(data):
cnt += i +1
return cnt
def process():
global lock
cnt = 1
while not g_exit:
print cnt
lock.acquire()
cnt += 2
lock.release()
time.sleep(1)
def main():
td = threading.Thread(target = process)
td.start()
while True:
try:
data = raw_input('')
except:
break
if data[0] == 'q':
break
print time.time()
try:
print calculate(int(data))
except:
break
print time.time()
print '\n'
global g_exit
g_exit = 1
td.join()
if __name__ == '__main__':
main()
注意这里使用了raw_input的方法,其实就相当于main thread被阻塞在这个地方。等到我们输入ctrl+c的时候就会触发异常,此时代码就会从循环中跳出来。这样不会出什么意外。当然,为了保证程序的正常运行,还是建议大家直接输入quit来停止程序,这样更友好一些,也有益于回收资源。