python的多线程编程实在是太简单好用了~ 下面介绍的这些都是threading模块中的内容 Thread Lock/RLock Condition Semaphore/BoundedSemaphore Event Timer local currentThread 总结 python的”伪多线程” 实例1.线程安全的队列 Thread 创建多线程的方法: 1.最简单的不带参数的方法 def MyThread(): print 'duoxiancheng'if __name__ == '__main__': th = threading.Thread(target=MyThread) th.start() while True: time.sleep(1) 2.带参数的方法 def MyThread(a, b): print a + bif __name__ == '__main__': th = threading.Thread(target = MyThread,args = (1, 2)) #th = threadin
发表于 2017-06-05 13:36:50 | 条评论 | 阅读次数:66
由于题目标题都过于暴力,被强行改了一波题目名,不要在意这些细节。。 A.大新闻 B.黑框眼镜 C.华莱士 D.谈笑风生 E.图样 F.图森破 G.五点共圆 H.续一秒 I.一颗赛艇 J.真正的粉丝 A.大新闻 假设最后移动完后,紧挨着的平行x轴的线段的端点为(a,b),(a+n−1,b)(a, b),(a+n-1,b)(a,b),(a+n−1,b) 我们能够证明,如果刚开始两个人,X1<X2X_1 < X _2X​1​​<X​2​​, 那么移动位置后,第一个人的x坐标还是会小于第二个人的x坐标,因为交换两者的x大小关系只会导致总步数更多。 答案就等于∑i=1n∣Xi+(i−1)−a∣+∑i−1n∣Yi−b∣\sum_{i=1}^n|X_i+(i-1)-a| + \sum_{i-1}^n|Y_i-b|∑​i=1​n​​∣X​i​​+(i−1)−a∣+∑​i−1​n​​∣Y​i​​−b∣ 所以X和Y可以单独算贡献,把X和Y都单独排序一下。 对于Y,很显然b取Y的中位数时,会取最小值。 对于X,不是那么明显,如果我们令Xi=Xi+(i−1)X_i = X_i+(i - 1
acm
发表于 2017-06-02 00:53:59 | 条评论 | 阅读次数:308
私有属性 私有属性 py是一种动态语言,其实理论是不存在私有属性这种说法的。 但是在类中用__开头的方法名和属性名默认是私有属性。它的处理机制是这样的: 在编译的时候,py会自动把类中以__name这样的格式换成_classname__name这样的格式 举个栗子: class A: def __ceshi(self): print '666'A()._A__ceshi() #可以这样调用到
发表于 2017-05-29 23:26:07 | 条评论 | 阅读次数:33
自定义替换,把match对应的内容替换成想要的东西。 自定义替换 # -*- coding:utf8 -*-import redef deal_func(match): str = match.groups()[0] return '[%s]\n' % strif __name__ == '__main__': str = '''【a】【b】【c】''' p = re.compile('【(.*?)】\n') print p.sub(deal_func, str) MatchObject中有几个很常用的: group() #获得匹配全文 groups() #获得匹配在子文本,即用括号括起来的 p = re.compile('【(.*?)】\n')result = p.subn('', str) #比较简单的所有全部替换成空白 p = re.compile('【(.*?)】\n')m = re.search(str) #匹配第一个m = re.findall(str) #返回一个list,里面是所有匹配的子文本,如果需要全文本,记得把它括起来m = re.fi
发表于 2017-05-29 16:43:07 | 条评论 | 阅读次数:31
不得不说,python配上flask,太飘了! flask 路由的设置 启动和结束 调用模板 生成链接 获取表单信息 读配置文件 以静态文件输出 全局变量 python 使用中文字符 字符串格式化 dictionary操作 dump调试 函数参数 参数的引用 切片 字符串前加修饰符 取特殊目录 range与xrange 错误处理和遍历文件 静态成员函数和静态成员变量 import机制 python内存回收机制 flask 路由的设置 @app.route('/index')#index时可以访问def index(): return 'hello world'@app.route('/')@app.route('/index')#留空或者index都可以访问@app.route('/login', methods = ['GET', 'POST']) #可以用GET和POST访问@app.route('/login/<arg>')#匹配数字结尾的def login(arg): pass #直接这样控制@app.route('/logi
发表于 2017-05-23 21:45:22 | 条评论 | 阅读次数:179
啊,终于要开始学习py了,今天试着搭建了一下环境,感觉比php不是简单一点点,似乎主要是因为flask框架已经解决了那些配置的问题了,真方便。 安装及使用virtualenv 安装flask pycharm使用该环境 编写hello world 安装及使用virtualenv sudo apt-get install python-virtualenv #deepin安装virtualenvyum list|grep virtualenv #CentOS检查有哪些包,然后安装对应的包就好了 virtualenv是一个极度方便的东西,主要是解决了不同的网站有不同的py版本依赖问题。 比如,我如果服务器同时跑2个程序,但是程序对应的py版本不一致,如果是修改系统全局的话,这样之后两个程序就无法同时运行,有了virtualenv就很方便了,他能在里面把py的环境独立出来,之后再往里面修改扩展什么的,也不会影响到其他的应用。 mkdir myprojectcd myprojectvirtualenv venv #表示队当前目录配置一个环境. venv/bin/activate #表示切换成当前
发表于 2017-05-22 23:59:43 | 条评论 | 阅读次数:48
leetcode竟然有类似oj一样的玩法来学习database,太赞了 182. Duplicate Emails 175. Combine Two Tables 181. Employees Earning More Than Their Managers 183. Customers Who Never Order 197. Rising Temperature 176. Second Highest Salary 595. Big Countries 196. Delete Duplicate Emails 182. Duplicate Emails 题意:求表中哪些邮箱是重复出现过的 思路:先用group by分类统计一下每个出现的次数,然后子查询一下 select p.Email from( select Email,count(*) as cnt from Person group by Email) as p where cnt > 1; 175. Combine Two Tables 题意:一个表里有名字,一个表里有地址,要联合查询出每个人的住址,住址可
发表于 2017-05-22 16:34:04 | 条评论 | 阅读次数:278
Copyright © 2017 - 2018 qwb's blog
blog.csustacm.com All Rights Reserved
Powered by qwb Contact me