摘要: 在对文件进行预处理的时候,由于有的文件有太大,处理很慢,用python处理是先分割文件,然后每个文件起一个线程处理,启了10个线程,结果还比不起线程慢一些,改成多进程之后就好了.使用multiprocessing模块实现真正的并发 因为GIL会序列化线程, Python中的多线程不能在多核机器和集群中加速. 因此Python提供了multiprocessing模块, 可以派生额外的进程代替线程, 跳出GIL的限制. 此外, 你也可以在外部C代码中结合该建议, 使得程序更快. 注意, 进程的开销通常比线程昂贵, 因为线程自动共享内存地址空间和文件描述符. 意味着, 创建进程比创建线程会花费更多, 阅读全文
posted @ 2013-11-29 18:43 桂皮猪 阅读(829) 评论(0) 推荐(0) 编辑
摘要: 1.write(sting) >>> f=open('somefile-11-4.txt','w')>>> f.write('this\nis\nhaiku') #write(string)>>> f.close()>>> >>> f=open('somefile-11-4.txt','r')>>> f.read() #在这里直接f.read()读出的是不换行的一段字符。'this\nis\nhaik 阅读全文
posted @ 2013-11-29 09:40 桂皮猪 阅读(1685) 评论(0) 推荐(0) 编辑
摘要: python 调用函数时使用星号 *, **调用函数时使用星号 * 或 **test(*args):* 的作用其实就是把序列 args 中的每个元素,当作位置参数传进去。如果 args 等于 (1,2,3) ,那么这个代码就等价于 test(1, 2, 3) 。test(**kwargs):** 的作用则是把字典 kwargs 变成关键字参数传递。如果 kwargs 等于 {'a':1,'b':2,'c':3} ,那这个代码就等价于 test(a=1,b=2,c=3) 。 阅读全文
posted @ 2013-11-29 09:34 桂皮猪 阅读(461) 评论(0) 推荐(0) 编辑