计算化学公社

 找回密码 Forget password
 注册 Register
Views: 4663|回复 Reply: 9
打印 Print 上一主题 Last thread 下一主题 Next thread

[Python] 小白想学习Pythpon 请问有什么好的资料/资源/途径/平台推荐?

[复制链接 Copy URL]

538

帖子

2

威望

2476

eV
积分
3054

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
各位老师,
  小白想学习Python,请问有什么好的资料/资源/途径/平台推荐?

1187

帖子

5

威望

2841

eV
积分
4129

Level 6 (一方通行)

2#
发表于 Post on 2021-1-29 11:44:13 | 只看该作者 Only view this author
本帖最后由 snljty 于 2022-9-11 11:36 编辑

--*--链接已更新--*--

O'Reilly系列的那几本书。就是一个动物放封面的那一套。有名的几本都有中译本。
入门是这个
《Python学习手册》
python做科学计算等的话一定要简单了解numpy和matplotlib等。
这本
《利用Python进行数据分析》

上面这两本强烈推荐看一看的。经常是慢的话一天,快的话上午看个入门,下午就可以开始写自己的代码的那种。Python上手极快!
然后说点无关的。
对Python机器学习感兴趣的,推荐这两本。
《Python机器学习基础教程》
《机器学习实战:基于Scikit-Learn和TensorFlow》
做GUI界面的话,简单的用Tkinter即可。上网搜一些有一些很不错的入门教程。复杂的通常是Qt和wxWidget的Python实现,分别叫PyQt和wxPython。这方面的资料感兴趣的话也可以看看。
关于并行和更一般的异构计算计算,首先先要了解协程、多线程(最常见的Python实现CPython目前由于GIL的存在,其本身(不包括C拓展等)还做不到实际意义上的多线程,也就无法使用多线程来利用多核CPU)、多进程等模型,以及GPU计算原理。这方面的书感兴趣的话也可以看一下。我记不清书名了,有时间发一下。虽然Python本身计算效率不高,但是用Python来理解这些模型还是很方便的,可以从技术实现细节上解放出来。
如果无聊时候想学学网络爬虫,可以看看
《Python网络爬虫权威指南》
以上都是O'Reilly的一个系列的。
当然,细节问题上,google往往是你最好的朋友。诸如怎么用Python调用C/C++/Fortran写的库,这些如果你做长期开发,一定要掌握的。
网上都在推荐某L老师教程。我个人不是太推荐初学者看那个。一个是他介绍的很多内容和科学计算方面关系不大,更像网页工程师学的...另一个有时候跳步有点大。
再提一下Python环境的问题。如果不想太折腾,一开始就可以用Miniconda(如果硬盘空间够,直接上Anaconda)。IDE的话简单任务用IDLE,甚至IPython,Jupyter Notebook都可以。复杂任务还是用IDE会比较好。推荐两个IDE:PyCharm和Spyder。各有长处。

上面提到的书我分享到下面的链接了。绝大部分中英文版的都有。
链接:https://pan.baidu.com/s/11WGQpRjZs6DbyxHxIp8ehQ
提取码:BDSB

评分 Rate

参与人数
Participants 6
eV +28 收起 理由
Reason
Serious + 4 谢谢分享
啦啦啦333 + 4 谢谢分享
cyx98 + 5 谢谢
noodles的困惑 + 5 牛!
fffff + 5 谢谢
北大-陶豫 + 5 谢谢

查看全部评分 View all ratings

2

帖子

0

威望

91

eV
积分
93

Level 2 能力者

3#
发表于 Post on 2021-2-1 15:07:49 | 只看该作者 Only view this author
snljty 发表于 2021-1-29 11:44
O'Reilly系列的那几本书。就是一个动物放封面的那一套。有名的几本都有中译本。
入门是这个
《Python学习 ...

链接被和谐了...

1187

帖子

5

威望

2841

eV
积分
4129

Level 6 (一方通行)

4#
发表于 Post on 2021-2-1 17:21:46 | 只看该作者 Only view this author
0x7F 发表于 2021-2-1 15:07
链接被和谐了...

感谢提醒,我先分享一部分吧,剩下的有时间再筛到底哪个踩到百毒的G点了

4

帖子

0

威望

533

eV
积分
537

Level 4 (黑子)

5#
发表于 Post on 2022-8-31 20:57:39 | 只看该作者 Only view this author
您好,能再发一下吗,又看不到了。。

509

帖子

1

威望

4249

eV
积分
4778

Level 6 (一方通行)

6#
发表于 Post on 2022-9-10 21:39:42 | 只看该作者 Only view this author
snljty 发表于 2021-1-29 11:44
O'Reilly系列的那几本书。就是一个动物放封面的那一套。有名的几本都有中译本。
入门是这个
《Python学习 ...

请问python 脚本的并行化具体能推荐学习资料吗?最近想学习把脚本并行从而处理md轨迹时更快,希望找点学习资料,万分感谢

1187

帖子

5

威望

2841

eV
积分
4129

Level 6 (一方通行)

7#
发表于 Post on 2022-9-11 11:32:40 | 只看该作者 Only view this author
tjuptz 发表于 2022-9-10 21:39
请问python 脚本的并行化具体能推荐学习资料吗?最近想学习把脚本并行从而处理md轨迹时更快,希望找点学 ...

Python最常见的实现(CPython)由于众所周知的原因(GIL,全局解释器锁)而导致目前版本不支持实质上的多核多线程模型,除非内嵌C/Fortran等,否则多核并行只能考虑多进程方法。这方面的教材还是有一些的,如果对多进程模型比较熟悉,随便找一本都可以。不过我建议先思考几个问题:
1. 慢是慢在哪里?如果是读轨迹慢,可能主要瓶颈在硬盘IO。这个基本无解,除非换(最好NVMe)固态硬盘。或者如果是跨节点IO,可能瓶颈在网络。另外就是算法上有没有能优化的地方?比如计算RMSD,直接算的算法是O(N^2)的,大体系根本算不动。但是算法上推导,用速度自相关函数基于快速傅里叶变换算法可以把复杂度降到O(NlogN),这对大体系可能是上百倍的速度优化,远高于并行带来的速度提升。一般来说,并行来提升速度未必是要最优先考虑的。
2. 是否很好利用了NumPy等数据结构模型底层的C/Fortran实现的优势?还是在用list这样python本身的东西?

评分 Rate

参与人数
Participants 1
eV +2 收起 理由
Reason
卡开发发 + 2 我很赞同

查看全部评分 View all ratings

3622

帖子

3

威望

1万

eV
积分
18442

Level 6 (一方通行)

第一原理惨品小作坊

8#
发表于 Post on 2022-9-11 13:51:34 | 只看该作者 Only view this author
tjuptz 发表于 2022-9-10 21:39
请问python 脚本的并行化具体能推荐学习资料吗?最近想学习把脚本并行从而处理md轨迹时更快,希望找点学 ...

多线程的方法除了上面通过C或Fortran嵌入之外,其实在楼上提到的尽可能使用NumPy数组代替List基础之上,如果计算瓶颈部分只是涉及到NumPy数组或是简单的For循环,你可以使用Numba等JIT方案。要用njit模式要声明变量的类型,用之前看清楚NumPy当中到底有多少函数能够被Numba所支持就可以了,NumPy的FFT并不能被Numba支持(我印象本身也不支持OMP),不过如果规模不是那么大的问题涉及到嵌套FFT的部分其实开object模式就可以了。
日常打哑谜&&探寻更多可能。
原理问题不公开讨论,非商业性质讨论欢迎私聊。
本周忙

509

帖子

1

威望

4249

eV
积分
4778

Level 6 (一方通行)

9#
发表于 Post on 2022-9-11 17:27:47 | 只看该作者 Only view this author
snljty 发表于 2022-9-11 11:32
Python最常见的实现(CPython)由于众所周知的原因(GIL,全局解释器锁)而导致目前版本不支持实质上的多核 ...

谢谢大佬的指教,我的脚本只是用了嵌套for循环从parmed读入的轨迹中的atom list来进行原子对之间的简单坐标运算,判断是否满足设定条件。看来问题可能不在于并行,而在于数据结构或者使用的库。

509

帖子

1

威望

4249

eV
积分
4778

Level 6 (一方通行)

10#
发表于 Post on 2022-9-11 17:31:03 | 只看该作者 Only view this author
卡开发发 发表于 2022-9-11 13:51
多线程的方法除了上面通过C或Fortran嵌入之外,其实在楼上提到的尽可能使用NumPy数组代替List基础之上, ...

确实只是简单的嵌套for循环,我再看看parmed的atom list 对象底层是否是numpy实现的,思考下能否用切片功能代替for循环

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-27 10:31 , Processed in 0.984328 second(s), 28 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list