Linux下的信号量机制与编程
信号量当我们在多用户系统,多进程系统,或是两者混合的系统中使用线程操作编写程序时,我们经常会发现我们有段临界代码,在此处我们需要保证一个进程(或是一个线程的执行)需要排他的访问一个资源。
为了解决这个问题,引用了信号量机制,我们可以使用互斥或信号量来控制一个多线程程序对于临界区的访问。
信号量是一个特殊的变量,他是一个整数,并且只有两个操 作可以使得其值增加:等待(wait)与信号(signal)。
用于等待(wait)的P(信号量变量)用于信号(signal)的V(信号量变量)
二值信号量二值信号量使是只有0和1两个值的变量
假如有一个信号量为mutex,有如下两个操作
P(mutex)/wait(mutex) 若mutex大于0,mutex减为0;若mutex等于0,则挂起该进程
V(mutex)/signal(mutex) 若有进程被挂起等待mutex则释放mutex使被挂起的进程执行,若没有,则mutex加到1
**mutex取值只能为1/0**
也叫互斥信号量,可以用其管理临界区资源的控制权
Linux中的信号量工具信号量函数信号量函数定义:
1234# ...
python爬虫框架Scrapy(二)
爬虫编写
item读取数据
12345678910tr_list = response.xpath("//table[@class='tablelist']/tr")[1:-1] for tr in tr_list: item = {} item['title'] = tr.xpath("./td[1]/a/text()").extract_first() item['position'] = tr.xpath("./td[2]/text()").extract_first() item['number'] = tr.xpath("./td[3]/text()").extract_first() item['place'] = tr.xpath("./td[4]/te ...
python爬虫框架Scrapy(一)
Scrapy框架简介
-Spider MiddlewaresSpider只对response进行过滤处理,不对数据进行处理
初始化创建项目1scrapy startproject myspider
生成爬虫123scrapy genspider response response.cn#@response 爬虫名称#@response.cn 爬虫域名范围
在生成的response.py文件中包含以下代码
12345678910111213# -*- coding: utf-8 -*-import scrapyclass PixviSpider(scrapy.Spider): name = 'pixvi' #爬虫名 allowed_domains = ['pixiv.net'] #爬虫范围,需要爬取的url地址你必须在这个域名下 start_urls = ['http://www.pixiv.net/'] #初始响应网站,需要有内容爬取的内容 def parse(self, response):# ...
Django学习笔记(三)
初试API1$python manage.py shell
创建一个管理员账号1$python manage.py createsuperuser
Django学习笔记(二)
Django基本命令创建project1$django-admin startproject myproject
进入myproject目录
使用开发服务器1$ python manage.py runserver
会报错
1You're accessing the development server over HTTPS, but it only supports HTTP.
django 默认的runserver使用的是http协议,如果需要https协议,需要以下3个库
123django-extensions django-werkzeug-debugger-runserver pyOpenSSL
安装
12345pip install django-extensionspip install django-werkzeug-debugger-runserverpip install pyOpenSSL
配置django的settings.py文件
在INSTALLED_APPS下添加
123'werkzeug_debugger_runserver ...
Django学习笔记(一)
Django文件urls.py网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。
views,py处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中的网页可以将显示内容,比如登陆后的用户名,用户请求的数据,输出到网页。
models.py与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候 你可以不使用。
forms.py表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,当然你也可以不使用。
templates 文件夹
views.py 中的函数渲染templates中的Html模板,得到动态内容的网页,当然可以用缓存来提高速度。
admin.py后台,可以用很少量的代码就拥有一个强大的后台。
settings.pyDjango 的设置,配置文件,比如 DEBUG 的开关,静态文件的位置等。
Django安装DjangoWindows下在Anaconda Prompt中用pip install Django安装
虚拟环境依赖安装(搭建多个开发环境)Windows下Ana ...
用numpy实现简单的三层BP神经网络
最近在看吴恩达老师的机器学习视频,讲到神经网络时有些模糊,于是决定自己用代码实现一下最基本的神经网络。
关于BP算法一文弄懂神经网络中的反向传播法
代码实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374import numpy as npclass NeuralNetwork(object): def __init__(self,input_nodes,hidden_nodes,output_nodes,learning_rate): #设定输入层,隐藏层,输出层的节点个数 self.input_nodes = input_nodes+1 # +1 设置偏执神经元来进行修正 self.hidden_nodes = hidden_nodes self.output_nodes = o ...