Python爱好者俱乐部
18247 542
[34 楼] nikkor8518 [泡菜]
20-8-11 07:22
我也是疫情封闭开始上手Python,做些数据分析,慢慢熟悉numpy, pandas, matplotlib, scipy。
从分类器开始,挺好玩,买了个显卡。但是感觉用熟还继续需要投入不少时间。
相见恨晚,几年前就应该学这个。
本帖由 SM-N9600 客户端编辑于:2020-08-11 07:26:37
[33 楼] 大信 [泡菜]
20-8-11 07:19
johncool 发表于 2020-08-10 11:02
我在linux服务器上用过thread,开发并行处理的程序。确实是多核心并行处理的,Python版本大概是2.1。你看看你的版本是什么,个人...


你这个并行应该是多进程,而不是多线程吧?
本帖由IOS客户端发布
[32 楼] 闲聊状态 [泡菜]
20-8-11 04:38
benniewang 发表于 2020-08-10 14:09
说到这个。

你看linux一个软件有那么多的发行版本,那么多功能类似或者相近的软件。。。大家就不能都联合起来,把所有的力量放在做好...


社区开发 大佬集成 大佬回馈
但是大佬也得吃饭啊……于是很多大佬也就不全回馈……

而且 大家兴趣都不在一处……

redhat 算是不错的了 但是也不是啥都行

开源的 非公司化组织的,说是整合好后发布的也就是freebsd了
很久没折腾了,不过 我估计到了python这种层面没啥区别………

而ms全家桶其实才是内部兼容最优秀的

而最近一段时间的web安全扫描 各种开源各种坑 只有大asp屹立不倒…… 而开源实现能坚持的就是大家都嗤之以鼻的jsp...

要是有完整版的.net core pandas 我可能会彻底转向c# 还有就是ms为啥要阉割basic....
本帖由安卓客户端编辑于:2020-08-11 04:39:42
[31 楼] benniewang [资深泡菜]
20-8-11 03:59
花了一天的时间,把代码改好了。python开发的效率真的挺高,我这种码农里的渣渣都可以快速开发出可用的代码--先不管是不是最优,能用就行,性能不行硬件顶。
[30 楼] benniewang [资深泡菜]
20-8-10 22:49
lzc463 发表于 2020-8-10 22:38
也想学学python,可是没有需求,至多整理一下excel文件。

能把excel功能都用好,也是高手。
[29 楼] lzc463 [资深泡菜]
20-8-10 22:38
也想学学python,可是没有需求,至多整理一下excel文件。
[28 楼] benniewang [资深泡菜]
20-8-10 22:09
闲聊状态 发表于 2020-8-10 22:00
python 一堆心怀伟大理想的人做的积木 组装的时候总是有谢不一样的地方……

说到这个。

你看linux一个软件有那么多的发行版本,那么多功能类似或者相近的软件。。。大家就不能都联合起来,把所有的力量放在做好一个软件上么?

都是你看我不顺眼,我看你不顺眼。
[27 楼] 闲聊状态 [泡菜]
20-8-10 22:04
大信 发表于 2020-08-10 13:48
按照网上的资料,因为GIL锁的天生机制的限制,python只能是伪线程。即使编写多线程程序,仍然只能使用一个CPU核心进行处理。...


实际上不完全是 因为pandas这种东西实际上是c程序 python只是个出入口而已… 所以 这部分其实不适用gil

而我说的那个有时单线程 有时多线程 确实是操作系统告诉我的 而且执行时间也有区别 为啥?不知道………

因为 这样的部分 其实都应该努力让他变成numpy pandas或者gpu里的东西或者简单点@jit……
本帖由安卓客户端编辑于:2020-08-10 22:07:53
[26 楼] 闲聊状态 [泡菜]
20-8-10 22:01
benniewang 发表于 2020-08-10 13:54
后台搞个sql多好。


我觉得也是………

哪怕是上内存里的sqlite
本帖由安卓客户端编辑于:2020-08-10 22:13:32
[25 楼] 闲聊状态 [泡菜]
20-8-10 22:00
benniewang 发表于 2020-08-10 13:49
sklearn天生是单线程的,但是有一些新的功能用了并行代码。具体的,看文档或者直接看代码。...

只看到版本号
没去研究更多的

自己写的部分自然是一样的

还有debian的pandas默认to_html方法 如果dataframe里字比较多就省略掉 一部的 ubuntu conda的就不这样,但是 他们tosql toxls就没事

python 一堆心怀伟大理想的人做的积木 组装的时候总是有谢不一样的地方……

本帖由安卓客户端发布
[24 楼] benniewang [资深泡菜]
20-8-10 21:59
出来混的迟早是要还的--适用于任何领域任何行业。

写个外汇交易策略回测,虽然用了并行,但还是没有能把cpu的负载长时间压在100%,因为觉得懒得折腾代码了,能出结果就行。
这次想测试一个新的策略,原来的代码框架无法实现了,不过这样一改,虽然内存占用率大大提高,但是能把cpu的负载长时间压在100%了。
[23 楼] benniewang [资深泡菜]
20-8-10 21:54
大信 发表于 2020-8-10 21:45
不行,我必须要用线程而不能用进程。因为200多个线程共享一个二维列表各自访问各自的数据区域(写),由另外一个专门的线程来分析、展示数据(读)。

如果用进程的话,数据共享会是很大的问题。另外,我发现你经常打字的时候线程和进程不分。比如这个pool方法就是进程的,而不是线程。

后台搞个sql多好。
[22 楼] benniewang [资深泡菜]
20-8-10 21:52
大信 发表于 2020-8-10 21:45
不行,我必须要用线程而不能用进程。因为200多个线程共享一个二维列表各自访问各自的数据区域(写),由另外一个专门的线程来分析、展示数据(读)。

如果用进程的话,数据共享会是很大的问题。另外,我发现你经常打字的时候线程和进程不分。比如这个pool方法就是进程的,而不是线程。

进程间也有通信吧。
[21 楼] benniewang [资深泡菜]
20-8-10 21:50
大信 发表于 2020-8-10 21:45
不行,我必须要用线程而不能用进程。因为200多个线程共享一个二维列表各自访问各自的数据区域(写),由另外一个专门的线程来分析、展示数据(读)。

如果用进程的话,数据共享会是很大的问题。另外,我发现你经常打字的时候线程和进程不分。比如这个pool方法就是进程的,而不是线程。

pool的方法在python看来是进程,但对于cpu来说是线程。
[20 楼] benniewang [资深泡菜]
20-8-10 21:50
大信 发表于 2020-8-10 21:48
按照网上的资料,因为GIL锁的天生机制的限制,python只能是伪线程。即使编写多线程程序,仍然只能使用一个CPU核心进行处理。

那你就用进程。
[19 楼] benniewang [资深泡菜]
20-8-10 21:49
闲聊状态 发表于 2020-8-10 21:39
我遇到的是ubuntu debian下的sklearn就是单线程 换用conda装同版本就是多线程…(但也不用ht)
而一个简单的循环加数 就有时候单线程 有时候多线程……

我也不知道为何………

sklearn天生是单线程的,但是有一些新的功能用了并行代码。具体的,看文档或者直接看代码。
[18 楼] 大信 [泡菜]
20-8-10 21:48
闲聊状态 发表于 2020-8-10 21:39
我遇到的是ubuntu debian下的sklearn就是单线程 换用conda装同版本就是多线程…(但也不用ht)
而一个简单的循环加数 就有时候单线程 有时候多线程……

我也不知道为何………


按照网上的资料,因为GIL锁的天生机制的限制,python只能是伪线程。即使编写多线程程序,仍然只能使用一个CPU核心进行处理。
[17 楼] 大信 [泡菜]
20-8-10 21:45
benniewang 发表于 2020-8-10 20:38
p = mp.Pool(mp.cpu_count())

我很讨厌并行(其实是操作系统原理没学好)。这样粗放的方式还行。

这句命令能使cpu用到最大的cpu线程数量。比方说3990x是64核128线程,mp.cpu_count() = 128,无论是在win和linux下都是一样的结果。

cpu所谓的thread和python里的thread其实不是一回事情--理论上不太懂,这是实证的结果。


不行,我必须要用线程而不能用进程。因为200多个线程共享一个二维列表各自访问各自的数据区域(写),由另外一个专门的线程来分析、展示数据(读)。

如果用进程的话,数据共享会是很大的问题。另外,我发现你经常打字的时候线程和进程不分。比如这个pool方法就是进程的,而不是线程。
[16 楼] 闲聊状态 [泡菜]
20-8-10 21:39
大信 发表于 2020-08-10 09:37
看来你研究得比较深入,能不能帮我解决一个多线程的性能问题?
从网上文档得知,python采用GIL机制实际上是不支持CPU的多核、...


我遇到的是ubuntu debian下的sklearn就是单线程 换用conda装同版本就是多线程…(但也不用ht)
而一个简单的循环加数 就有时候单线程 有时候多线程……

我也不知道为何………
本帖由安卓客户端发布
[15 楼] 闲聊状态 [泡菜]
20-8-10 21:37
benniewang 发表于 2020-08-10 12:19
pandas有个cuda版本的,叫cudf,更香了

确实 pandas这东西还是python上的最pandas

java下那个是个初步模拟 .net core下的那个根本就是烂尾工程了……
本帖由安卓客户端发布
[14 楼] benniewang [资深泡菜]
20-8-10 20:38
大信 发表于 2020-8-10 17:37
看来你研究得比较深入,能不能帮我解决一个多线程的性能问题?
从网上文档得知,python采用GIL机制实际上是不支持CPU的多核、多线程。虽然python有thread模块实现多线程,但它实际上是假的多线程,不能利用CPU多核的资源。我开始对这个说法深信不疑,但后来我的程序分别在Win7和Win10平台上运行的巨大差异,让我困惑了。

我的程序运行并发了220个左右的多线程,主要负责ping采集数据。在Window 7上运行比较流畅,但是在Windows 10就时常出现卡顿。Windows 7是6年前的旧电脑,i3处理器,3.5GHz,4核,18GB内存。Windows 10是较新的电脑,i7-9700,3GHz,8核心,18GB内存。

通过Windows系统的任务管理器看,程序在Windows 10上运行的时候,只有1个核心负荷非常高,其余7个核资源占用在30%以下。印证了python不支持多核的说法。

而在Windows 7中运行程序,通过任务管理器查看4个核心都在高速运行(见下图)。感觉python也似乎也能利用多核实现真正的多线程? 跟网上的普遍说法矛盾,这究竟是怎么回事?

...


p = mp.Pool(mp.cpu_count())

我很讨厌并行(其实是操作系统原理没学好)。这样粗放的方式还行。

这句命令能使cpu用到最大的cpu线程数量。比方说3990x是64核128线程,mp.cpu_count() = 128,无论是在win和linux下都是一样的结果。

cpu所谓的thread和python里的thread其实不是一回事情--理论上不太懂,这是实证的结果。
[13 楼] benniewang [资深泡菜]
20-8-10 20:19
闲聊状态 发表于 2020-8-10 17:09
最近我在试几条邪路

关键是pandas 啊 没有了pandas python都不香了。。。。。

pandas有个cuda版本的,叫cudf,更香了
[12 楼] arondes [陈年泡菜]
20-8-10 20:00
大信 发表于 2020-8-10 17:37
看来你研究得比较深入,能不能帮我解决一个多线程的性能问题?
从网上文档得知,python采用GIL机制实际上是不支持CPU的多核、多线程。虽然python有thread模块实现多线程,但它实际上是假的多线程,不能利用CPU多核的资源。我开始对这个说法深信不疑,但后来我的程序分别在Win7和Win10平台上运行的巨大差异,让我困惑了。

我的程序运行并发了220个左右的多线程,主要负责ping采集数据。在Window 7上运行比较流畅,但是在Windows 10就时常出现卡顿。Windows 7是6年前的旧电脑,i3处理器,3.5GHz,4核,18GB内存。Windows 10是较新的电脑,i7-9700,3GHz,8核心,18GB内存。

通过Windows系统的任务管理器看,程序在Windows 10上运行的时候,只有1个核心负荷非常高,其余7个核资源占用在30%以下。印证了python不支持多核的说法。

而在Windows 7中运行程序,通过任务管理器查看4个核心都在高速运行(见下图)。感觉python也似乎也能利用多核实现真正的多线程? 跟网上的普遍说法矛盾,这究竟是怎么回事?

...


用multiprocessing,基于多进程的并行
[11 楼] johncool [资深泡菜]
20-8-10 19:02
我在linux服务器上用过thread,开发并行处理的程序。确实是多核心并行处理的,Python版本大概是2.1。你看看你的版本是什么,个人怀疑是版本造成的,或者是win10本身的支持不好
本帖由安卓客户端发布
[10 楼] nahcooo [资深泡菜]
20-8-10 18:25
lcchen 发表于 2020-8-10 12:59
这个的确快速,不过中文支持还是有些想不到的异常


锟斤拷锟斤拷锟斤拷?
[9 楼] 大信 [泡菜]
20-8-10 17:37
闲聊状态 发表于 2020-8-10 17:09
最近我在试几条邪路

1.jython 这个有宇宙无敌jvm加持,结果速度比cpython还慢。。。。
2。iornpython 这个有超级无敌.net core 加持,速度是上去了,可怎么也没法pip 实在不爽

这俩东西 我运行的最流畅的就是 --- py-kms 这俩倒是都行....
pypy.....

而且这些邪路还都是2.7兼容。。。(pypy例外)

关键是pandas 啊 没有了pandas python都不香了。。。。。


看来你研究得比较深入,能不能帮我解决一个多线程的性能问题?
从网上文档得知,python采用GIL机制实际上是不支持CPU的多核、多线程。虽然python有thread模块实现多线程,但它实际上是假的多线程,不能利用CPU多核的资源。我开始对这个说法深信不疑,但后来我的程序分别在Win7和Win10平台上运行的巨大差异,让我困惑了。

我的程序运行并发了220个左右的多线程,主要负责ping采集数据。在Window 7上运行比较流畅,但是在Windows 10就时常出现卡顿。Windows 7是6年前的旧电脑,i3处理器,3.5GHz,4核,18GB内存。Windows 10是较新的电脑,i7-9700,3GHz,8核心,18GB内存。

通过Windows系统的任务管理器看,程序在Windows 10上运行的时候,只有1个核心负荷非常高,其余7个核资源占用在30%以下。印证了python不支持多核的说法。

而在Windows 7中运行程序,通过任务管理器查看4个核心都在高速运行(见下图)。感觉python也似乎也能利用多核实现真正的多线程? 跟网上的普遍说法矛盾,这究竟是怎么回事?

[8 楼] 闲聊状态 [泡菜]
20-8-10 17:09
最近我在试几条邪路

1.jython 这个有宇宙无敌jvm加持,结果速度比cpython还慢。。。。
2。iornpython 这个有超级无敌.net core 加持,速度是上去了,可怎么也没法pip 实在不爽

这俩东西 我运行的最流畅的就是 --- py-kms 这俩倒是都行....
pypy.....

而且这些邪路还都是2.7兼容。。。(pypy例外)

关键是pandas 啊 没有了pandas python都不香了。。。。。 本帖最后由 闲聊状态 于 2020-8-10 17:12 编辑
[7 楼] 闲聊状态 [泡菜]
20-8-10 17:04
lcchen 发表于 2020-8-10 12:59
这个的确快速,不过中文支持还是有些想不到的异常

1.最好使用linux系统,原因是 字符集  linux 默认 utf-8
2。非要win,那就杜绝在路径等地方遇见中文。。。。

3。好好学习下字符集的绕绕,对于这种松散组织的语言很有必要。大MS的全家桶内部好用也不是没原因的,python没那环境,或者说linux才是python的原生环境。。。
[6 楼] 大信 [泡菜]
20-8-10 16:26
lcchen 发表于 2020-8-10 12:59
这个的确快速,不过中文支持还是有些想不到的异常


文字回复说有对论坛的恶意攻击。晕死!
只好贴图啦
[5 楼] arondes [陈年泡菜]
20-8-10 14:46
这个论坛不适合粘贴代码 会说你的内容有危害性
当然就更没有高亮显示的功能了