![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
善良的兽人Goodorc
这个作者很懒,什么都没留下…
展开
-
[转Randy博客]Windows下Python配置与打包
原地址:http://blog.csdn.net/randywithmagic/article/details/6161064Windows下python 配置与打包 所使用工具python 2.6.4http://www.python.org/ftp/python/2.6.4/python-2.6.4.msi p转载 2012-04-03 17:52:05 · 704 阅读 · 0 评论 -
巧用exec语句修改string.Template的delimiter
http://jianpx.iteye.com/blog/899230原文名字叫做:浅析python的string.Template最终这篇文章没有解决修改模板类的参数的问题。其实问题简单来说就是:能否在定义一个class的时候,在class创建的“第一时间”,将一个变量传进去。这个“第一时间”在__init__函数之前,因为在Template这种用模板创建原创 2014-01-02 19:05:58 · 1401 阅读 · 0 评论 -
Python游戏服务器开发日记(八)整体方案改变了……
老大和CTO提出了新的方案,之前的架构被推翻了。 简单来说,就是使用多进程,工作进程启动python环境。 最奇葩的是,我们回到了利用共享内存保存entity的方案。entity里保存纯data,是一个纯的二进制数据块。 Entity在用的时候,包装成PyObject给Python使用。如果修改了,则重新打包成二进制块存回去。原创 2015-10-16 18:27:59 · 2666 阅读 · 0 评论 -
Python游戏服务器开发日记(二)绕过GIL启动多线程Python环境
说道Python和多线程,很容易想到GIL,GIL意味着只要是用Python做的多线程程序,就无法利用多个CPU。 经过一些失败的尝试后,我也一度认为GIL是无解的。我们甚至把注意力转向了IronPython等无锁Python,但是实际上那样问题可能更多,比如我们不熟悉mono,mono也没达到完全成熟的程度。 直到skynet的QQ群里一位朋友介绍了另原创 2015-08-19 17:22:56 · 3381 阅读 · 0 评论 -
Python游戏服务器开发日记(三)用greenlet模拟lua coroutine的研究
分布式系统中,如果一个Entity访问其他Entity,那么这个调用一般都是异步的,也就是说当时不能立即得到返回值。如果用callback的方式实现,函数就会变得很碎。 skynet在核心层处理了这个问题,并提供了skynet.call来做异步调用。 据我研究,Python2.x提供了生成器(generator)模拟coroutine的方法,但是显然是不原创 2015-08-19 17:44:03 · 1846 阅读 · 0 评论 -
Python游戏服务器开发日记(五)skynet_messagequeue和skynet_timer
最近,skynet群里有同好与我一起讨论skynet底层一些比较难理解的实现细节,乘此机会仔细看了一下源码,我最关心的是skynet_mq和skynet_timer两个我会用到的部分。 本文不想讨论太细节的问题,具体的实现思路我并没有理的非常清晰,还是看代码为好。我这里从实际需求出发,写一些tips,方便新来的小伙伴参考。 skynet的time原创 2015-09-02 22:02:16 · 3668 阅读 · 1 评论 -
Python游戏服务器开发日记(七) 关于协程(greenlet)和C语言的思考
前两周埋头在服务器的具体技术试验里,不断的遇到小问题,不断的解决。 大量的问题核心就是在利用dlfcn库调用python so时,API的用法会有变化。导出符号本身不是什么难题,难在某些Python C API是用宏或者其他方式提供的。最奇葩的是greenlet库,把所有API放在一个全局指针数组里,而且初始化方法也和标准python扩展库不甚相同。后来是采取把greenlet库原创 2015-09-20 23:26:45 · 1800 阅读 · 0 评论 -
Python游戏服务器开发日记(一)目标
到了新的环境,老大让我有空研究下一代服务器技术,作为一个长期任务。 新的服务器想达到的目标:1、分布式系统,对象(Entity)之间的关系类似于Actor模型。 2、逻辑服务,是单进程、多线程的,对象之间发消息进行通信,但是简单读取属性尽可能做到直接。3、必须使用Python语言。开发方式类似于BigWorld引擎。这个目标还是很宏伟的原创 2015-08-19 17:03:21 · 7115 阅读 · 0 评论 -
Python游戏服务器开发日记(六) 解决GIL难题!——Python再认识
本系列文章的第一章就已经提到,用加载多个python动态链接库的方式,可以巧妙的避开GIL,实现多个python环境运行在同一个进程内。 但是从上一个试验,到思考具体的实际用法,又经过了长达一周多的思考试验。到此时,Meme服务器框架的最底层疑难才彻底明朗。本文将彻底分析多线程下多python环境的使用。原创 2015-09-02 22:09:04 · 2427 阅读 · 0 评论 -
Python游戏服务器开发日记(九)近期问题总结。(打酱油中……)
由于领导提出的多进程方案有很多问题,进展缓慢。好在有另一个同事慢慢进展中,我主要是做各种单独的试验,集成各种技术进行尝试。 Python多子进程方案的核心是共享内存,除了mmap方式,还有shm方式,都是linux提供的共享内存方案。 无论哪种共享内存方式,都需要自行申请整块内存,然后在创建对象时,将对象数据放在共享内存区域,实现多进程都能访问的目的。原创 2015-11-12 15:25:39 · 2118 阅读 · 2 评论 -
Python类型迷惑:None与数字比较;格式化字符串与unicode
Python类型迷惑:None与数字比较;格式化字符串与unicode原创 2013-12-16 10:47:04 · 4026 阅读 · 0 评论 -
Lunatic Python的一些安装问题
2012年6月26日更新:太坑爹了,太坑爹了。。。lunatic python在64位ubuntu机器上运行会崩溃。查了好久发现几处错误在编译时候就会报出来。详见本博客新一些的博文。 另外,最新的版本已经完全支持lua5.1了(至少看起来是的)。源码和一些项目进展在这里找: https://launchpad.net/lunatic-python 总之,这原创 2012-05-14 21:31:32 · 1738 阅读 · 2 评论 -
[被坑纪念][转帖]Python函数默认参数的一个小陷阱
原文地址:http://www.byywee.com/page/M0/S211/211243.html Python函数默认参数的一个小陷阱 代码def foo(a1, args = []): print "args before = %s" % (args) args.insert(0, 10) args.insert原创 2012-04-03 18:00:33 · 1099 阅读 · 0 评论 -
Python 正则表达式高级应用举例
首先,写这篇文章的起因,是这两天玩了一个网站 http://www.checkio.org 用Python做题、出题,交流,很有意思也很有挑战。————————————进入正题—————————————————————————— 其中一道字符串处理的题目如下:http://www.checkio.org/missio原创 2012-04-04 21:08:00 · 1428 阅读 · 1 评论 -
Python源码学习笔记(1 基本数据类型)
Python源码剖析 这本书相当好。 我用Python也有几个月时间了,这时候读Python源码,会对提高C语言水平、Python水平、算法基础都有相当的帮助。 我目前只看了最前面的数据类型基础,也就是网上可以下载到的: Python源码剖析.chm 这个文件。学习心得嘛,就是多看多想,有问题的时候再调试Python源码验证想法。 欢迎留言原创 2012-04-04 21:06:59 · 821 阅读 · 0 评论 -
近期尝试的web技术小结
近期开始做一个比较简单的服务器,核心功能是做小型手机游戏的数据交换和存储。由于这方面经验几乎为0,所以从HTTP服务开始做起。服务器平台为Linux(Ubuntu 11)。1、HTTP服务器:Apache,大名鼎鼎的阿帕奇,使用非常广泛,但是由于功能越来越多被指责不够轻量。Apache附带的服务器负载测试工具ab值得一用。Lighttpd,和Apache同样提供HTTP原创 2012-04-24 02:59:35 · 1258 阅读 · 0 评论 -
较难的动态规划问题——付款问题,面值任意,可找零
在超市买东西经常会遇到付款、找钱的问题。 一般来说,我们的货币面值也就 100, 50, 20, 10, 5, 1, 0.5, 0.1 这几种,基本都是单位1或者是5的倍数。如果问:最少要付多少张钞票?这个问题是比较容易的,只要从大往小付款就可以了。 进一步如果可以让服务员找零,并且找零的钞票数量也算在总钞票数里,让总钞票数最少。比如付98元,只需要付100元找原创 2012-04-12 16:15:07 · 2475 阅读 · 0 评论 -
感叹!不管神马东西用python写就会变得巨短!
上次是wxWidget,这次又发现一个cURL。python版本分别叫做wxPython和pycurl。 wxWidget并不能算是一个特别牛的库,至少接口设计上还是MFC级别的,对xml也没有能用的支持,拼个界面很累。但是你猜不到的是,就这么烂的接口,用Python写出来的程序依然不长。 还有人用Python写Win32的窗口程序,也不长。原创 2012-04-22 18:09:52 · 1809 阅读 · 2 评论 -
近两日极为纠结——游戏服务器,选择何种技术方案?(Python + SWIG--RakNet + Lua)
需求是:一种移动或web游戏的服务器,要求是尽量保证维护简单,框架尽可能简洁,代码量不宜过多;考虑1人非全职进行服务器维护,不应对运维造成太大难度。 首先,必须使用RakNet,可用的游戏服务器框架很稀有,这是其中一个开源框架,底层提供完整的可靠UDP协议,上层有完整的封装,不得不用。 其次,客户端采用C++、Lua编写,其中逻辑部分完全使用Lua编写。服务器需原创 2012-05-10 08:15:33 · 8606 阅读 · 4 评论 -
sqlalchemy中文问题解决方案 By tearyrose
sqlalchemy是python下一个很强大的ORM,最近刚刚开始使用。当然由于只是刚刚接触,只学习使用了他的DB API,对于Mapper还有些不得要领。 最近写的一个程序,用到MySql数据库,有些数据库读写的操作,对sqlalchemy已经有了些了解,自然要练练,更何况它能大幅度的提高程序开发的效率。于是就驱动sqlalchemy,用它开始了第一个数据库应用程序的编写。 代码说转载 2012-05-14 18:16:21 · 1215 阅读 · 0 评论 -
留一个神python代码——混合使用wxpython和pyglet(cocos2d编辑器)
import wximport pygletfrom pyglet.gl import *import sysif sys.platform == 'win32': from pyglet.window.win32 import _user32 from pyglet.gl import wglelif sys.platform.startswith转载 2012-06-02 16:14:52 · 3719 阅读 · 0 评论 -
用Python操作Named pipe命名管道,实用做法
用Python操作Unix命名管道的实用做法原创 2016-02-01 15:52:43 · 13306 阅读 · 2 评论