“人造太阳”计划

Python中的迭代器和生成器

十年热恋 提交于 2019-12-10 02:47:12
迭代器 Python为迭代器提供了两个BIF: iter()和next() ,对一个对象调用iter()就得到他的迭代器,调用next()就会返回下一个值,而当迭代器没有值可以返回的时候就会抛出一个 StopIteration 的异常,关于迭代器,有两个魔法方法: __iter()__和__next()__ ,下面实例: class Fibs : def __init__ ( self , n = 20 ) : self . a = 0 self . b = 1 self . n = n def __iter__ ( self ) : return self def __next__ ( self ) : self . a , self . b = self . b , self . a + self . b if self . a > self . n : raise StopIteration return self . a fibs = Fibs ( ) for each in fibs : print ( each ) 生成器 强大的列表推导式: print ( [ i * i for i in range ( 10 ) ] ) print ( [ i for i in range ( 1000 ) if not ( i % 2 ) and ( i % 3 ) ] )

LeNet网络

三世轮回 提交于 2019-12-09 18:20:07
LeNet网络 导入必要的工具包 import time import torch from torch import nn , optim 添加文件路径 import sys sys . path . append ( ".." ) import d2lzh_pytorch as d2l device = torch . device ( 'cuda' if torch . cuda . is_available ( ) else 'cpu' ) 构造神经网络层 class LeNet ( nn . Module ) : def __init__ ( self ) : super ( LeNet , self ) . __init__ ( ) self . conv = nn . Sequential ( nn . Conv2d ( 1 , 6 , 5 ) , nn . Sigmoid ( ) , nn . MaxPool2d ( 2 , 2 ) , nn . Conv2d ( 6 , 16 , 5 ) , nn . Sigmoid ( ) , nn . MaxPool2d ( 2 , 2 ) ) self . fc = nn . Sequential ( nn . Linear ( 16 * 4 * 4 , 120 ) , nn . Sigmoid ( ) , nn .

python条件与循环-循环

主宰稳场 提交于 2019-12-07 07:30:34
while语句 while用于实现循环语句,通过判断条件是否为真,来决定是否继续执行。 一般语法 语法如下: while expression: suite_to_repeat 计数循环 >>> cnt = 0 >>> while(cnt < 9): ... print 'the index is ', cnt ... cnt += 1 ... the index is 0 the index is 1 the index is 2 the index is 3 the index is 4 the index is 5 the index is 6 the index is 7 the index is 8 代码块里包含print和自增语句,将被重复执行,知道cnt不下于9。 无限循环 while True: suite_to_repeat 条件表达式一直为真。 for语句 for语句是python提供的另一个循环机制,可以用于遍历序列,可以用在列表解析和生成器表达式中。 一般语法 for循环会访问一个可迭代对象(例如序列或叠加器)中的所有元素,并在所有条目处理过后结束循环。语法如下: for iter_var in iterable: suite_to_repeat 每次循环,iter_var迭代变量被设置为可迭代对象(序列、迭代器或其他支持迭代的对象)的当前元素

python 递归函数

吃可爱长大的小学妹 提交于 2019-12-06 14:57:11
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x … x n,用函数fact(n)表示,可以看出: fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n 所以,fact(n)可以表示为n x fact(n-1),只有n=1时需要特殊处理。 于是,fact(n)用递归的方式写出来就是: def fact(n): if n==1: return 1 return n * fact(n - 1) print(fact(1)) print(fact(5)) print(fact(100)) 上面就是一个递归函数。可以试试,运行结果如下: 1 120 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 Process finished with exit code 0

DBUS基础知识

*爱你&永不变心* 提交于 2019-12-06 08:18:48
1. 进程间使用D-Bus通信 D-Bus是一种高级的进程间通信机制,它由freedesktop.org项目提供,使用GPL许可证发行。D-Bus最主要的用途是在Linux桌面环境为进程提供通信,同时能将Linux桌面环境和Linux内核事件作为消息传递到进程。D-Bus的主要概率为总线,注册后的进程可通过总线接收或传递消息,进程也可注册后等待内核事件响应,例如等待网络状态的转变或者计算机发出关机指令。目前,D-Bus已被大多数Linux发行版所采用,开发者可使用D-Bus实现各种复杂的进程间通信任务。 2. D-Bus的基本概念 D-Bus是一个消息总线系统,其功能已涵盖进程间通信的所有需求,并具备一些特殊的用途。D-Bus是三层架构的进程间通信系统,其中包括: 接口层:接口层由函数库libdbus提供,进程可通过该库使用D-Bus的能力。 总线层:总线层实际上是由D-Bus总线守护进程提供的。它在Linux系统启动时运行,负责进程间的消息路由和传递,其中包括Linux内核和Linux桌面环境的消息传递。 包装层:包装层一系列基于特定应用程序框架的Wrapper库。 D-Bus具备自身的协议,协议基于二进制数据设计,与数据结构和编码方式无关。该协议无需对数据进行序列化,保证了信息传递的高效性。无论是libdbus,还是D-Bus总线守护进程,均不需要太大的系统开销。 总线是D

DBus 入门与应用 -- DBus 的 C 编程接口

空扰寡人 提交于 2019-12-06 08:15:31
转载自:http://www.cnblogs.com/muxue/archive/2012/12/02/2798876.html 最近在学 Dbus,不过总是不得其门而入。 大部分资料都讲了很多东西却最终没有让我搞清楚怎么用 DBus,不就是一个 IPC 通信的工具么?就没有一点实用些的资料么?看了很多资料之后还是觉得只见树木不见森林。仔细整理下思路,觉得还是应该从最基本的方面入门,先从 DBus 的 C API 入手学习,有了这些知识,就算麻烦,也可以先在完成一个基本功能的例子程序的同时大概的知道 DBus 的运行机制。 在网上找到这么一篇文章: http://www.matthew.ath.cx/misc/dbus , 正合我意,下面的内容基本是对这篇文章的翻译和扩充。 注意: 翻译没有得到原文作者同意,原文也很简单易懂,最好去读原文。如果收到投诉,我会立即撤掉本文的。 本文不是一篇好的 DBus 入门,有很多基本的东西不在记述之内。 一般情况下不会直接使用 C API 进行 DBus 的编程,而是使用某种 DBus-binding,但我觉得理解 DBus 的 C API 对完整地理解 DBus 是非常重要的。 虽然 DBus 是用 C 写的,而且本文写的是 C API,但是 DBus 设计中充满的面向对象的思想,请注意。 一、共通部分的代码 在使用 DBus 进行通信的时候

dbus-glib 安装环境搭建

北城余情 提交于 2019-12-06 08:12:50
首先安装dbus的各种库 具体步骤请在csdn上参考 别说郁闷 写的 dbus-glib 安装环境搭建 按照他写的步骤,全部做完后再编译可能会出现找不到mechine-id的错误具体解决方法如https://www.sothink.cn/archives/2015/12/d-bus-library-appears-to-be-incorrectly-set-up.html 再调整好所有的头文件位置后即可编译。 下面是简单的首发实例,这个实例server从client读取两个整数并将其和返回给client server: #include <stdbool.h> #include <stdlib.h> #include <dbus/dbus-glib.h> #include <stdio.h> #include <string.h> #include <time.h> #include <unistd.h> #include <dbus-1.0/dbus/dbus.h> #include <math.h> void reply_to_method_call(DBusMessage* msg, DBusConnection* conn) { DBusMessage* reply; DBusMessageIter rootIter; dbus_uint32_t serial = 0;

DBus如何传送和接收数据

不打扰是莪最后的温柔 提交于 2019-12-06 08:08:25
DBus是进程间通信的工具。网上的资料不太多,大都又是基于GLib或python的。在windows下如果要用纯c/c++语言,似乎只能用原始的DBus库来编写程序。倘若不亲自写写,还真不知道到底是怎样的。 DBus的数据都要绑定在消息上: 消息: DBusMessage 数据: DBusMessageIter 从数据结构的命名上看,与其称之为消息的数据,不如称为消息数据的迭代器。 事实上其数据的操作过程,就是个迭代过程。 I 传输单独一个变量 如bool类型,有: DBusMessage *msg; // DBus消息 DBusMessageIter datatoSentIter; // DBus数据迭代器 dbus_bool_t singleData = true; // DBus的内建bool型 // 每条语句都需要返回值bool判断是否成功,为方便清晰略去 dbus_message_iter_init_append(msg, &datatoSentIter); // 将迭代器绑定至消息 dbus_message_iter_append_basic(&datatoSentIter, DBUS_TYPE_BOOLEAN, &singleData); // TODO: 向连接发送并flush 以上是发送,接收此单个bool数据也很简单: DBusMessageIter

dbus的hello world

心已入冬 提交于 2019-12-06 08:06:29
来自: http://blog.csdn.net/chenyufei1013/article/details/6573411 dbus的是一个低延迟,低开销,高可用性的IPC机制。通过dbus的daemon,可以实现进程间通信和函数调用。Windows下,dbus的开发库可以去这里( http://code.google.com/p/dbus-windows-installer/downloads/list )下载,在VS设置头文件和lib库的路径即可。若是要编写其Hello World,自然包含客户端和服务端两部分。下面的Hello World代码包含了发送消息和函数调用两部分,分别描述之。 1) 信号 假设客户端发送消息,服务端接收。客户端发送消息的流程如下: 1.创建于dbus daemon的会话连接。 2.创建消息,若有消息参数,附加之(这个一般都有) 3.通过连接发送消息。 1: int main ( int argc, char *argv[]) 2: { 3: DBusError dberr; 4: DBusConnection *dbconn; 5: DBusMessage *dbmsg; 6: char *text; 7: 8: // 初始话错误信息的结构体 9: dbus_error_init (&dberr); 10: 11: // 创建会话连接 12:

Windows下,dbus的hello world

自作多情 提交于 2019-12-06 08:06:08
dbus的是一个低延迟,低开销,高可用性的IPC机制。通过dbus的daemon,可以实现进程间通信和函数调用。Windows下,dbus的开发库可以去这里( http://code.google.com/p/dbus-windows-installer/downloads/list )下载,在VS设置头文件和lib库的路径即可。若是要编写其Hello World,自然包含客户端和服务端两部分。下面的Hello World代码包含了发送消息和函数调用两部分,分别描述之。 1) 信号 假设客户端发送消息,服务端接收。客户端发送消息的流程如下: 1.创建于dbus daemon的会话连接。 2.创建消息,若有消息参数,附加之(这个一般都有) 3.通过连接发送消息。 1: int main ( int argc, char *argv[]) 2: { 3: DBusError dberr; 4: DBusConnection *dbconn; 5: DBusMessage *dbmsg; 6: char *text; 7: 8: // 初始话错误信息的结构体 9: dbus_error_init (&dberr); 10: 11: // 创建会话连接 12: dbconn = dbus_bus_get (DBUS_BUS_SESSION, &dberr); 13: if (dbus