存档

2012年3月 的存档

Android中运行Ice-Java demo提示java.lang.VerifyError: com.zeroc.hello.HelloApp

2012年3月27日 没有评论

在网上查了下,大致有两种原因
1. 大多数可能引用的外部jar文件出现了问题,比如说package的路径产生了问题,但该类被class文件定义了。
2. 调用了一些编译器产生异议的问题,可能是使用的sdk版本不同,但源代码是一些更老版本的定义。
阅读全文…

分类: android 标签: ,

[转载]gevent 安装

2012年3月21日 没有评论

其实很简单,记录在这里给有需要的朋友,大多数问题其实是出在easy_install 上的,遇到此类问题,最好能去下个源包,比如这个:
http://pypi.python.org/packages/source/g/gevent/gevent-0.13.1.tar.gz#md5=5c1b03d9ce39fee4cfe5ea8befb1d4c4

解压后,要先运行下其中的:
python fetch_libevent.py

然后:
python setup.py build
python setup.py install

齐活!简单伐?

转载自:
1.http://iyuan.iteye.com/blog/815073

分类: Python 标签: ,

[转载]python 线程,GIL 和 ctypes

2012年3月21日 没有评论

1 GIL 与 Python 线程的纠葛
GIL 是什么东西?它对我们的 python 程序会产生什么样的影响?我们先来看一个问题,
运行下面这段 python 程序,CPU 占用率会到多少:

# 请勿在工作中模仿,危险:)
def dead_loop():
while True:
pass

dead_loop()

阅读全文…

分类: Python 标签: ,

python GIL 相关

2012年3月20日 没有评论

对于纯python代码,即使开启多个线程也无法并行执行,因为GIL会将它们串行化,但这并不意味着多线程在python中无用武之地:
一个I/O密集型的线程因等待而sleep时,会释放GIL,另一个线程这时可以接手(因为在输入输出函数会更多地调用内建的C级代码,而不是Python级代码)
可以在C扩展中开启多个线程,不受GIL的限制,比如ctypes
对于多用户的程序或者需要responsive interface的GUI程序,多线程是一个很好的解决方案

参考文档:
1.http://septem.iteye.com/blog/1002509

分类: Python 标签: ,

翻译How does multi-threading work with Ice for Python?

2012年3月20日 没有评论

Python supports multi-threaded programming, but the interpreter is inherently single threaded: a global interpreter lock (GIL) allows only one thread at a time to execute a Python opcode. Despite this limitation, careful management of the GIL can still provide performance improvements; for example, a thread that is about to block on I/O can release the GIL so a different thread can use the CPU in the meantime. Although the GIL is an implementation detail that is typically of interest only to developers of Python extensions, it is still important for Python programmers to understand the semantics of the GIL and how it affects their applications.

Python程序是支持多线程的,但是它的解释器本质上确是单线程的。因为GIL(全局解释器锁)在执行Python代码的时候一次只允许开启一个线程。虽然有这个限制,但是在GIL控制方面,还有可以提升性能的。比如,一个线程在I/O阻塞的时候释放GIL,让另一个线程去使用CPU。一般GIL的实现细节应该是Python扩展开发人员应该关心的。但是它对于我们理解GIL的原因和它对我们项目的影响同样重要。

分类: Python 标签: , ,

Ice之java生成文件分析

2012年3月19日 没有评论

1.首先准备一个ice文件并命名为:Printer.ice

module Demo {
interface Printer {
    void printString(string s);
  };
};

阅读全文…

分类: Linux 标签: ,

CentOS5.4+Ice3.4.2+python2.7.2

2012年3月7日 没有评论

系统环境:
CentOS release 5.4 (Final)

软件版本:
Ice-3.4.2.tar.gz
ThirdParty-Sources-3.4.2.tar.gz
Python-2.7.2.tgz

安装过程:
tar zxf Ice-3.4.2.tar.gz #解压Ice
cd Ice-3.4.2 #进入安装目录
cd cpp #因为cpp是其他开发语言的基础,所以必须先安装
vi config/Make.rules #修改Ice安装目录,及配置第三方库所在的位置,如果没有,解压ThirdParty-Sources-3.4.2.tar.gz进行安装 阅读全文…

分类: Linux, Python 标签: ,