看了下 api 和源码,问题已经解决了,哈哈,但是还有些疑惑,但至少能 work 了 解决办法: 将原先用于 dataFrame 对象附值的语句 post['a'][0] = 'test' 用 dataFrame 本身的 set_value 方法改写 post.set_value(0, 'a', 'test) 执行时间按 microseconds 计算,上面一种平均 20 万,下面一种方法,平均 50 但是造成这么大差距的原因需要继续深挖源码,暂时还不清楚。。。有待高手
#3 楼 @xiaogui #4 楼 @est 代码不能直接贴,公司内部用的,不过大概可以描述 耗时的代码大致内容是 string 匹配 string 数组 即类似于 arrTest = ['a', 'b'] if ( 'a' in arrTest): 这样的情况,if 内部执行的代码是对 panda 库的一条记录的一列数据进行附值。 i.e. post # panda object arrTest = ['a', 'b'] if ( 'a' in arrTest): post['colA'][0] = 'a' 并没有其他需要大量运算的代码 我有将时间 log 打在这段代码前后,发现直接 python xxx.py 的运行情况下耗时在 15000mircoseconds 左右,而通过 service,会高出 10 倍到 20 倍。 所以感觉不是代码复杂度导致的问题,即使贴出代码也并不会有太大帮助,因为两次执行的代码都是一模一样的,区别仅在于调用方式上。目前我查的方向在是不是由于框架本身一些限制导致,或者说 httpserver 是否都有一些影响效率的情况。但是 google 了一通又查不到什么东西,关键是这个问题不太好描述
#1 楼 @flowerwrong 感觉 ruby 大神多阿。。。而且感觉这个不是单纯的 python 问题
#1 楼 @small_fish__ impressive! 谢谢
#5 楼 @loveltyoic 非常感谢,文章已保存,我尝试了一下在 thread 操作之前将 arr 进行了 Marshal.load(Marshal.dump(arr)),不过效率仍然没有很大提升,所以 MRI 的锁应该还是文章里所说的是固定只有一个进程在走,与是否操作同一个对象好像没有关系。我试了一下用 jruby,速度快了一倍,还挺有成就感的哈。不过对线程安全问题还得再深入一下,不过这是后话了
#1 楼 @loveltyoic 嗯,的确是,回头翻了一下书,ruby 的变量直接等于的话只是换个马甲而已。测试下来只能在每一次子循环中增加 join 才能将不同的 j 赋值给 k,所以看来只能写几行重复的了,否则主线程会在赋值语句执行之前,把 j 的循环走完,而在循环中直接写入 join 又与顺序执行一样。 第二个问题能否指点一下呢?
感觉这个不难吧?只用 2 个 imgholder,一个是当前展示,一个是即将进入的。点击数字的时候根据 index 从图片数组里获取图片地址,然后附给即将进入的 imgholder 应该就可以实现了
作为业余爱好新手顶一个,这条件真心不错。应届生这个条件难道在北京算不上高吗?至少在魔都开 4000 估计都有人抢