小编xav*_*ras的帖子

节点和错误:EMFILE,打开的文件太多

有些日子我一直在搜索错误的工作解决方案

Error: EMFILE, too many open files

似乎很多人都有同样的问题.通常的答案是增加文件描述符的数量.所以,我试过这个:

sysctl -w kern.maxfiles=20480,

默认值是10240.这在我看来有点奇怪,因为我在目录中处理的文件数量低于10240.更奇怪的是,在我增加了文件描述符的数量之后,我仍然收到相同的错误.

第二个问题:

经过多次搜索后,我找到了解决"太多打开文件"问题的方法:

var requestBatches = {};
function batchingReadFile(filename, callback) {
  // First check to see if there is already a batch
  if (requestBatches.hasOwnProperty(filename)) {
    requestBatches[filename].push(callback);
    return;
  }

  // Otherwise start a new one and make a real request
  var batch = requestBatches[filename] = [callback];
  FS.readFile(filename, onRealRead);

  // Flush out the batch on complete
  function onRealRead() {
    delete requestBatches[filename];
    for (var i = 0, l = batch.length; i …
Run Code Online (Sandbox Code Playgroud)

javascript macos file-descriptor node.js

147
推荐指数
8
解决办法
13万
查看次数

Python单例类

我正在使用Python 2.7在os x 10.6上编写firefox 5.1和selenium webdrive v.2的测试套件.

除了创建单例类之外,一切都工作正常,这应该只保证一个firefox实例:

def singleton(cls):
    instances = {}
    def getinstance():
        if cls not in instances:
            instances[cls] = cls()
        return instances[cls]
    return getinstance

@singleton
class Fire(object):
    def __init__(self):
        self.driver = webdriver.Firefox()
    def getdriver(self):
        return self.driver
    def close_(self):
        self.driver.close()
    def get(self, url):
        self.driver.get(url)
        return self.driver.page_source

f  = Fire()
f.close_()
Run Code Online (Sandbox Code Playgroud)

此时如果我f=Fire() 再次打电话没有任何反应.不会创建新实例.我的问题是为什么我会看到这种行为?我怎么做的?

我的第二个问题,如果我输入:

isinstance(f, Fire)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
Run Code Online (Sandbox Code Playgroud)

这对我来说很奇怪......根据我的理解它应该回归 True

最后一个问题:

当我有单身课时,我应该能够做到:

f = …
Run Code Online (Sandbox Code Playgroud)

python firefox singleton selenium-rc

1
推荐指数
1
解决办法
1472
查看次数