分类

Python

Python 2017-11-04

使用Hadoop的MapReduce和jieba分词统计西游记中的词频

这个功能主要是使用python的jieba分词模块来分词,然后使用mapreduce来统计,其实功能很简单,但是由于刚开始接触使用hadoop,出现了各种问题,这里记录下。
在hadoop执行的mapreduce程序时,使用python非系统模块的话会出现找不到包的错误,网上找到了一种解决方案,使用系统内置的zipimport模块,使用方法: 首先将该模块的所有文件复制到当前目录,然后执行:

zip -r jieba.zip jieba
mv jieba.zip jieba.mod

然后代码中就可以这样引入:

import sys

sys.path.append('./')
import zipimport

importer = zipimport.zipimporter('jieba.mod')
jieba = importer.load_module('jieba')
import jieba.analyse

执行的时候又提示错误.在import jieba.analyse时候报错找不到idf.txt这个文件,看了下jieba的源码才发现,在tfidf.py文件如下代码块:

_get_module_path = lambda path: os.path.normpath(os.path.join(os.getcwd(),
                   ...
Python 2017-11-04

使用 Python 编写 Hadoop MapReduce 程序

Hadoop 框架使用 Java 开发的,对 Java 进行了原生的支持,不过对于其它语言也提供了 API 支持,如 Python 、 C++ 、 Perl 、 Ruby 等。这个工具就是 Hadoop Streaming ,顾名思义, Streaming 就是 Pipe 操作,说起 pipe ,大家肯定不陌生。最原生的 Python 支持是需要 Jython 支持的,不过这里有额外的方法来实现,大家如果只是使用的话,不用纠结 Jython 转换的问题。

最容易的 Hadoop 编程模型就是 Mapper 和 Reducer 的编写,这种编程模型大大降低了我们对于并发、同步、容错、一致性的要求,你只要编写好自己的业务逻辑,就可以提交任务。然后喝杯茶,结果就出来了,前提是你的业务逻辑没有错误。

使用 Hadoop Streaming ,能够利用 Pipe 模型,而使用 Python 的巧妙之处在于处理输入输出的数据使用的是 STDIN 和 STDOUT ,然后 Hadoop Streaming 会接管一切,转化成 MapReduce 模型。

我们还是使用 wordcount 例子,具体内容不再详细解释,如果有不理解的可以自行度之。下面我们先看下 mapper 的代码:

#!/usr/bin/env python  

import sys  
#input comes ...
Python 2017-09-03

本站支持微信公众号了

在最新释出的v4.0版本中,本站集成了微信公众号的功能,现在可以使用微信公众号来管理你的vps了。
默认情况下是图灵机器人自动回复的,输入admin之后开始验证密码,通过后进入命令模式,可以通过在后台配置一些命令来在这里执行并返回结果。

当然,也集成了一些基本的博客文章搜索等功能,后续会集成一些常用等api进来。 欢迎大家扫码关注本站。 qrcode

Python 2017-06-04

使用树莓派实现WebCamera实时监控

配件就一个可以跑起来的树莓派,然后再有一个淘宝上的那种摄像头模块就可以了。
效果如下图:
WebCamera 这样就可以开着树莓派,然后只要通过浏览器就可以实时监控到你感兴趣的地方,代码也挺简单的,如下:

基于python3,需要安装picamera

pip install picamera

下面是示例代码:

#!/usr/bin/env python
# encoding: utf-8


"""
@version: ??
@author: liangliangyy
@license: MIT Licence
@contact: [email protected]
@site: https://www.lylinux.net/
@software: PyCharm
@file: webcam.py
@time: 2017/5/22 下午10:36
"""

import io
import picamera
import logging
import socketserver
from threading import Condition
from http import server

PAGE="""\
<html>
<head>
<title>picamera MJPEG streaming demo</title>
</head>
<body>
<h1>PiC...
Python 2017-05-19

Python虚拟环境设置

virtualenv

virtualenv 是一个可以在同一计算机中隔离多个python版本的工具。有时,两个不同的项目可能需要不同版本的python,如 python2.6.6 / python3.0 ,但是如果都装到一起,经常会导致问题。所以需要一个工具能够将这两种或几种不同版本的环境隔离开来,需要哪个版本就切换到哪个版本做为默认版本。virtualenv 既是满足这个需求的工具。它能够用于创建独立的Python环境,多个Python相互独立,互不影响,能够:

  • 在没有权限的情况下安装新套件
  • 不同应用可以使用不同的套件版本
  • 套件升级不影响其他应用

安装: pip install virtualenv

使用方法

创建环境

virtualenv [新环境名] :这会再当前目录下创建一个新环境目录 可使用 virtualenv --help 来查看如何使用。可以使用参数 --python=/usr/bin/python3 来创建一个已经安装的的Python环境。

使用环境

切换到新环境目录 执行:source ./bin/activate 来激活环境,激活后在命令行的前面会出现新环境名称 接下来可使用pip命令安装新环境需要的各种包。(pip命令在创建新环境时自带)

退出虚拟环境

deactivate

如果要删除虚拟环境,只需退出虚拟环境后,删除对应的虚拟环境目录...

Python 2017-04-08

在Django中使用缓存

Django 是动态网站,一般来说需要实时地生成访问的网页,展示给访问者,这样,内容可以随时变化,但是从数据库读多次把所需要的数据取出来,要比从内存或者硬盘等一次读出来 付出的成本大很多。而使用缓存的话,可以将数据保存在缓存中,下次访问的时候直接从缓存中获得数据,而不用去请求后端数据库,这样服务器可以很快的响应请求,从而提高加载速度。下面简单介绍下Django中的缓存系统。

缓存配置

Django支持多种缓存,例如本地文件缓存,数据库缓存,memcache,locmem等,下面分别简单介绍下:

文件缓存

这个很简单,就是将数据缓存在指定的目录中。配置如下:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/path/for/cache',
    }
}

数据库缓存

配置如下所示

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'my_cache_table',
    }
}

执行python ...

发现更多