python学习Processing
# -*- coding: utf-8 -*-
__author__ = 'Administrator'
import bisect
#排序说明:http://en.wikipedia.org/wiki/insertion_sort
#简化一些操作
#1:删减外部调用,降低工作负载
"""
说明:程序复杂度的另一部分是调用其他函数,方法和类所引入的,一般来说,应该尽量将代码放在循环之外,对于嵌套的循环
这点更加重要,不要在一个循环中反复计算可以在循环开始之前计算数值,内循环应该保持简洁.
"""
#2:deque还提供了append 和pop方法,在序列的两端都能以相同的速度执行
#例子2:如下:
from collections import defaultdict,namedtuple
import profile,stat
import sys
s=[('a',1),('b',2),('c',3)]
@profile('defaultdict')
def faster():
d=defaultdict(list)
for k,v in s:
d[k].append(v)
@profile('dict')
def slower():
d={}
for k,v in s:
d.setdefault(k,[]).append(v)
print slower(),faster()
print stat['dict']
print stat['defaultdict']
lg=defaultdict(long)
print lg['one']
cus=namedtuple('curs','firsname')
c=cus(u'apped',u'zifoe')
print c.firsname
#更多说明
"""
降低复杂度的工作可以通过用算法能很好的地处理高效的数据结构来存储数据实现,也就是说,当解决方法不明显时,应该考虑放弃并且重写出现问题部分,而不是为了性能
而破坏代码的可读性!# -*- coding: utf-8 -*-
__author__ = 'Administrator'
import subprocess as process#可移植的能够像线程一样处理的方法
from Processing import Process
#安装它的方法,请看:http://blog.csdn.net/imzoer/article/details/8701116
import os
def work():#它提供了Thread类很像Process类,可以任何平台
print 'hay i am aprocess id %d'%os.getpid()
PS=[]
for ii in range(4):
p=Process(target=work)
PS.append(p)
p.start()
for p in PS:
p.join()
#当创建了进程时,将会对内存进行fork,最有效进程使用方式使它们创建之后各自工作,以避免开销,并从线程检查它们的状态,除了内存状态被复制外,Process
#类还在其构造程序中提供了额外的args参数,还可以用来传递所需的数据
#pyprocessing还可以了一个类似于队列的类,可以用来在一个由该包管理的共享内存空间中让多个进程共享数据。
"""
它还提供了ctype和进程之间的对象共享功能,请看:http://pyprocessing.berlios.de/doc/shardctypes.html
"""
#例子2
import Queue as q
print 'this machine has %d cpus'\
%processing.cpuCount()
def wo():
f=q.get_nowait()
return 'workd on'+f
q=processing.Queue()
pool=processing.Pool()
for i in ('f1','f2','f3','f4','f5'):
q.put(i)
while True:
try:
resut=pool.apply_async(wo)
print resut.get(timeout=1)
except q.Empty:
break
"""
apply_async()方法通过进程池来调用wo函数,并立即返回结果对象,主进程可以将它作为结果返回
get方法可以用来等待结果(具有走进设置)
最后array类和Value类提供了共享内存空间。但是应该通过设计避免使用它们,因为它们会出现代码复杂性.
"""
"""
python学习Processing的更多相关文章
- Python学习资料下载地址(转)
[转]Python学习资料和教程pdf 开发工具: Python语言集成开发环境 Wingware WingIDE Professional v3.2.12 Python语言集成开发环境 Wingwa ...
- [转]Python学习资料和教程pdf
开发工具: Python语言集成开发环境 Wingware WingIDE Professional v3.2.12 Python语言集成开发环境 Wingware WingIDE Professio ...
- OpenCV之Python学习笔记
OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...
- Deep learning with Python 学习笔记(10)
生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...
- Deep learning with Python 学习笔记(1)
深度学习基础 Python 的 Keras 库来学习手写数字分类,将手写数字的灰度图像(28 像素 ×28 像素)划分到 10 个类别 中(0~9) 神经网络的核心组件是层(layer),它是一种数据 ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
- Python 学习小结
python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...
- Python学习路径及练手项目合集
Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159
随机推荐
- Android源代码之Gallery专题研究(2)
引言 上一篇文章已经解说了数据载入过程,接下来我们来看一看数据载入后的处理过程.依照正常的思维逻辑.当数据载入之后,接下来就应该考虑数据的显示逻辑. MVC显示逻辑 大家可能对J2EE的MVC架构比較 ...
- jquery之营销系统(补偿记录)
var appPath = getAppPath(); $(function(){ $("#opreateHtml").window("close"); $(& ...
- jquery之鼠标失去焦点事件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 1:scrapy框架原理与环境搭设
1:原理图: (*此图来自网络) 2:开发过程: 1)编写items.py,确定要抓取的关键字段名称 2)编写spider,确定发送request的形式以及对于response的处理 3)编写pipe ...
- C#Graphics画图
public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { G ...
- C#double保留两位小数
public static void Main(string[] args) { double db = Math.PI; db = Math.Round(db,); Console.WriteLin ...
- angularjs使用ng-messages-include实例
<!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <me ...
- canvas ---1
Canvas1 (关键词:canvas) canvas :就是html5中提供的一个标签,只是用来展示绘图的内容 canvas 标签的默认宽高:300*150 如果给canvas来设置高度和宽度 ...
- typedef std::string AddressLines[4]定义了一个string数组,大小为4
int main() { typedef std::]; std::]; std::string *pal1 = new AddressLines; delete [] pal; delete [] ...
- 你好,C++(18) 到底要不要买这个西瓜?4.1.6 操作符之间的优先顺序
4.1.6 操作符之间的优先顺序 在表达一些比较复杂的条件判断时,在同一个表达式中,有时可能会存在多个操作符.比如,我们在判断要不要买某个西瓜时,不仅要判断它的总价(单价8.2元/斤,一共10.3斤) ...