V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  timonwong  ›  全部回复第 18 页 / 共 25 页
回复总数  488
1 ... 10  11  12  13  14  15  16  17  18  19 ... 25  
2013-07-24 15:16:49 +08:00
回复了 jackyzy823 创建的主题 .NET 请教一个C#的问题。。
方法多了
1. 调用GUI部分使用MethodInvoker把委托给GUI线程调用,这个耦合比较重,不过对知识点没啥要求。(当然处理部分可以BackgroundWorker, Thread, TPL等等)。
2. Reactive Extensions,这个写习惯了就相当方便,要求你换换脑子。
ST3插件全部放到plugin_host进程(一个python环境+IPC)中加载,启动后要过一会插件才能用。
Version 2.0.2
Release Date: 8 July 2013
Sublime Text 3 beta is now available from http://www.sublimetext.com/3
-----> Removed expiry date <-----
Backported various fixes from Sublime Text 3
Improved minimap click behavior. The old behavior is available via the minimap_scroll_to_clicked_text setting
Added copy_with_empty_selection setting, to control the behavior of the copy and cut commands when no text is selected
2013-07-16 20:08:14 +08:00
回复了 paicha 创建的主题 Python # -*- coding:utf-8 -*- 为什么要这样的格式?
@thedevil5032
@xingzhi
是可选,因为python3源文件默认编码是utf-8: http://www.python.org/dev/peps/pep-3120/
如果源文件需要是由其它编码保存的话,仍然需要指定encoding
2013-07-15 23:23:26 +08:00
回复了 sivacohan 创建的主题 Python python的function的func_name,func_code之流在文档的什么地方?
Data model
2013-07-15 14:57:14 +08:00
回复了 lvii 创建的主题 Python python 如何并发采集设备信息
@lvii
我先建议你换成多线程模型,net-snmp的python绑定与gevent的兼容性未知,当然net-snmp的python绑定是否完全线程安全也未知,如果不是线程安全,也好做,使用多进程模型即可。

相当基本过程(多线程), 伪代码:

def worker_proc(equip_id, q):

oids = oids_for_equip_id(equip_id)
for oid in ords:
snmp_walk(oid)

data = pre_process_data()
q.put(data)

end


import threading

# Consumer queue
q= Queue()
def data_consumer(q):
# 这里可以考虑维护个buffer_list, 维持一个超时时间
# 在超时或者buffer_list的大小超过阈值时, bulk insert到数据库
data = q.get()
save_to_db(data)


# bookkeeping
threads = []
# Workers
for equip_id in equips:
t = threading.Thread(target=worker_proc, args=(equip_id,q))
t.start()
threads.append(t)
2013-07-15 11:26:11 +08:00
回复了 lvii 创建的主题 Python python 如何并发采集设备信息
@lvii 我没有说被动啊,你的需求其实是客户端啊,因为是你主动请求设备的数据。。。
最后那个OID那里,耗时长的原因是传输速度慢而不是数据量极大吧,数据量极大写起来就比较麻烦,如果只是传输速度慢(同时数据量也小)完全可以依赖上下文切换切到其它任务去。

还有两点:
1. 没有必要对一台设备的7次请求都分别做成线程, 直接顺序请求7次就可以了,单台设备的请求封在一个线程内(一个线程获取设备的7个OID)
2. 还有如果你的joinall()调用时机也不对,joinall()就是等待所有线程完成,你对单台设备的7次请求就等待其完成,跟做成顺序执行7次(无线程)没有什么区别,反而可能由于上下文切换速度还慢点,如果不需要同步,开了之后不用等待,只有程序退出的时候可能你需要所有操作完成join一下。
2013-07-14 16:10:16 +08:00
回复了 shoumu 创建的主题 Python 在一个已有的进程上挂接调试器不成功
@shoumu
那是不是在用32位的python开64位的程序?
2013-07-14 15:01:08 +08:00
回复了 shoumu 创建的主题 Python 在一个已有的进程上挂接调试器不成功
先检查3个前提条件吧,你给的信息太少了:
1. Windows only
2. 安装(并注册)有Debugger(VS, Debugging Tools for Windows, etc)
3. 目标程序无反制措施
2013-07-12 19:07:41 +08:00
回复了 andybest 创建的主题 问与答 用什么方法的储存一串010101最节约空间?
简单的话使用Run length encoding吧,无论是速度还是压缩率都可以。更高效算法也有,要运算量或实现难度来换。
2013-07-11 15:35:59 +08:00
回复了 lvii 创建的主题 Python python 如何并发采集设备信息
这种pull式获取传感器信息的,还是很好做,首先就不用考虑写一个高性能服务器需要做的活,因为这就是个客户端,实在不行在N台机器上开N个客户端分别获取不同组的信息最后统一写入到数据库(也可以写一个任务分配服务器来完成任务派发)。

再就是客户端编写,开N个线程其实也没啥,因为你点数不多(100多个),间隙也比较长(10s),那2s多的过程大部分都耗在传输上了(还有可能是结点部分处理相当相当慢,如果是数据量相当大导致的慢,我的假设没用,这段文本也就对你毫无用途了)。

数据库写入肯定是需要时间的,你可以另外开一个线程/进程/whatever干这种事情,写入速度要看你的数据量,数据量大还有更多的课题要做,几句话肯定说不完。

如果不需要考虑数据恢复的问题,可以在客户端内部维护一个list, 以一定的时间间隙,将这个list整个拿出来, 原来的list引用到另外一个新空list上(还考虑同步问题,暴力法就是用锁,当然锁都是要你命一万的),然后把整个list的数据bulk insert到数据库里。另外可以用message queue来完成数据写入工作:客户端发送采集到的数据到mq里(生产者), 一个单独的进程获取mq的数据,完成写入工作(消费者),这种模型简单不易出错。
@hooluupog
那种叫introsort吧,C++ STL上的 sort() 一般都是这种实现,稳定的 stable_sort() 还是用的 mergesort, 不过由于是实现相关的,不知道什么时候会变。

python 现在用 timsort (java现在也是,稳定排序,mergesort的一种)
go/pkg/sort就是很明显的quicksort
排序算法跟实现有关。v8对于小数组用了简单的排序算法,是稳定排序。其它数组用的quicksort
Firefox早期用quicksort, 现在用mergesort
2013-07-10 16:11:40 +08:00
回复了 zztczcx 创建的主题 问与答 nodejs 源码中c++ macro的某种用法?
这种都是小巫了,如果有兴趣,请Google "X Macros"。。。
61.139.2.69:53
202.98.96.68:53
2013-07-10 15:48:23 +08:00
回复了 zztczcx 创建的主题 问与答 nodejs 源码中c++ macro的某种用法?
#define NODE_EXT_STRING(x) &x ## _module,
最后面有逗号
2013-07-10 12:14:07 +08:00
回复了 akalanala 创建的主题 Sublime Text sublime怎么在不同平台统一快捷键?
Windows和Linux倒是可以做到一起,你可以做个软链接,将 blahblahblah (Windows).sublime-keymap 和 blahblahblah (Linux).sublime-keymap 联系到一起。
2013-07-09 12:08:27 +08:00
回复了 kenneth 创建的主题 Python Python如何快速获得图片的大小,但是不要下载。
@centerqi
BMP和PNG都还好说:
BMP的width在0x12, height在0x16 (u32, little endian)
PNG的width在0x10, height在0x14 (u32, big endian)

JPEG稍微麻烦点,位置不固定,因为在magic header 0xff, 0xd8后一般都会跟个JFIF segment, 用于thumbnail,需要跳过(当然也不大,thumbnail最大也就255x255, 24bit RGB存放,无压缩),然后再读取width和height。
2013-07-08 16:10:20 +08:00
回复了 banxi1988 创建的主题 Python 目前不习惯Python不能重载构造函数的问题
# 非要如此的话:

class Model(object):
def __init__(self, *args, **kwargs):
if args:
assert len(args) == 1
assert isinstance(args[0], dict)
self._init_models(args[0])
else:
self._init_models(kwargs)

def _init_models(self, model_dict):
# YOUR LOGIC
pass
2013-07-07 14:52:32 +08:00
回复了 cnxh 创建的主题 问与答 想做个生成GIF的网站 有版权问题吗?主要面向国外
GIF相关专利已过期
1 ... 10  11  12  13  14  15  16  17  18  19 ... 25  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3684 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 00:58 · PVG 08:58 · LAX 16:58 · JFK 19:58
Developed with CodeLauncher
♥ Do have faith in what you're doing.