Python论坛  - 讨论区

标题:Re: Re: [python-chinese]集思广益:经典小程序Game of life能怎样编写?

2004年08月16日 星期一 15:16

lpjlee37 lpjlee37 at 163.com
Mon Aug 16 15:16:30 HKT 2004

谢谢你,Xie Yanbo。我是记得多年前的一个life源码,也就百来行,才会想用python是不是也可以百来行写出来。我上网找到几个life的源码,是用VB写的。写得是不错了,可是我不喜欢VB(汗!)。最重要的是,我是想通过这个来多学学python,我刚开始学这个语言。




> On 2004-08-15 01:52:1092505924 +0800, lpjlee37 wrote:
> > 近日刚刚开始加入python拥护者行列,在学习python时,想起多年前用pascal和QB写过的game of life,突然想知道用python能有些什么样的写法。所以征集大家的意思作为交流和学习。大家就当是练手喽^_^
> > Game of life:在一个范围里,用小点表示生命,生命周围紧邻的八个点是他的邻居,当一个生命旁边有多于三个邻居的时候,下一轮时,该生命会因为资源不足而死去。如果有1-3个邻居,下一轮他会继续生存,并且他的旁边会多出一个新生命。用亮点表示存活,死亡不显示。
> > 其他规则:1、记录总共生存轮数。2、记录当前存活生命的数量并显示。3、生命全部死亡,或者生命情况维持不变时,提示并结束。
> > 可选规则:1、比较并显示当前生命群体是增长还是减少。2、初始范围大小和初始生命数量在一开始可以按提示输入。3、每轮间隔时间0.1秒到0.5秒可选。4、可以设定初始资源贫富程度,资源匮乏则允许共居生命数量少,反之则多。
> 
> 这种密集运算我想并不适合直接用 python 来编写。如果你对这个有兴趣,
> 曾经有一本介绍 DOOM 的 3D 图像技术的图书,里面用 C++ 实现了一个
> 非常快的 life 程序,国内几年前就已经翻译出版了,很厚的一本书,建议
> 你看一看。另外现在已经有大量的开源的 life 程序,其中很多的运行效率
> 都很好,自己去找一找吧。
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 

-------------------------------------------------------------------------------------
AOC(冠捷)17寸液晶16ms¥2888 http://design.163.com/aocmonitor/index.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年08月16日 星期一 15:18

马伟 mawei.nj at actionsoft.com.cn
Mon Aug 16 15:18:43 HKT 2004

python-chinese,您好!

	不知道现在有多少实际的客户使用python来做项目,做哪些行业,商业上的,有吗?


      顺颂商祺!
								2004-08-16
----------------------------------------------------
马伟
"坚持把事情做好,让顾客满意"
南京炎黄盈动科技发展有限公司
Actionsoft Co.,Ltd
Tel:8625-85324840
Fax:8625-85324840
Mobile:13337835824
E-mail:mawei.nj at actionsoft.com.cn
URL:http://www.actionsoft.com.cn
----------------------------------------------------

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年08月16日 星期一 15:43

Jacob Fan jacob at exoweb.net
Mon Aug 16 15:43:29 HKT 2004

Life 程序也算密集计算? 大家不要听说Python不适合做需要大量计算的应用,就把
运行在PC上的Python想象成和人脑计算速度一样慢的怪物了. :)
在现在的PC上,一个100*100的life游戏,每秒更新10次应该是没有问题的。如果需
要比这个快得多的速度的话,可以用数组做数据结构,用 pyrex来改写核心算法。


这种密集运算我想并不适合直接用 python 来编写。如果你对这个有兴趣,

>>曾经有一本介绍 DOOM 的 3D 图像技术的图书,里面用 C++ 实现了一个
>>非常快的 life 程序,国内几年前就已经翻译出版了,很厚的一本书,建议
>>你看一看。另外现在已经有大量的开源的 life 程序,其中很多的运行效率
>>都很好,自己去找一找吧。
>>
>>_______________________________________________
>>python-chinese list
>>python-chinese at lists.python.cn
>>http://python.cn/mailman/listinfo/python-chinese
>>
>>    
>>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040816/8b4ec29b/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年08月16日 星期一 16:28

Xie Yanbo idkey at 163.com
Mon Aug 16 16:28:56 HKT 2004

On 2004-08-16 15:43:1092642209 +0800, Jacob Fan wrote:
> 
>    Life 程序也算密集计算? 大家不要听说Python不适合做需要大量计算的应用,就
>    把运行在PC上的Python想象成和人脑计算速度一样慢的怪物了. :)
>    在现在的PC上,一个100*100的life游戏,每秒更新10次应该是没有问题的。如果
>    需要比这个快得多的速度的话,可以用数组做数据结构,用 pyrex来改写核心算
>    法。

我从来也没有把 Python 当成那么慢的怪物,我只是知道“纯”Python 在
某些方面是不太适合的──所有才会有 pyrex 这些产品的出现。不知道你
有没有编写 life 的经历,不要说“在现在的PC上”,即使是在 586 上,
一个 100X100 的 board,做不限制速度的 life 运算,引用前面提到的那
本3D图书的话,都能达到“象一阵风从显示屏上掠过”。刚测了一下,在
我 Celeron 1.7G 的机器上,用 xlife 程序,可以在大约 900X700 的
Board 上、大约5000-7000个存活的 cell 的情况下,达到每秒约 90 代的
衍生速度,图像看起来就象微风掠过的池塘上的涟漪(机器不行,达不到
狂风过境的效果)。

在 life 程序中,瓶颈主要有两方面,图像显示和衍生下一代,这里面一个
主要是显示系统的io速度,另一个则涉及到超多的 Cell 状态读取以及
巨量的 if 运算。我前面只提到密集运算欠妥。图像io可以用一些技巧
增加速度,不过如果不借助第三方的图像模块,单纯 Python 在这一方面
恐怕速度快不了;Cell 的读取和赋值速度要看用什么方法来存储 Cell、
Board,我没有测试过 Python 自带的类型的访问速度,不知道 list 来做
这件事速度如何──但只要这个访问效率稍微有点低效,在每秒几百万、
几千万的访问过程中,肯定会很明显的拖慢程序;if 语句同样要承担每秒
百万次量级的运算,这对于使用伪指令运行的虚拟机来说非常不利。

life 程序的算法确实非常简单,核心代码实际上就是几个语句,不过是对
一个二维数组反复运算而已。但越是这样的简单程序,用 Python 这样的
高级语言、甚至是基于虚拟机的语言来说,运行它们的速度越不理想。我
想这就象系统内核大多用 C 语言来实现,但几个被反复调用的核心函数
往往使用汇编来实现。



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号