小编Ray*_*Luo的帖子

可以安全地让多个进程同时写入同一个文件吗?[CentOs 6,ext4]

我正在构建一个系统,其中多个从属进程通过unix域套接字进行通信,并且它们同时写入同一文件.我从未研究过文件系统或这个特定的文件系统(ext4),但感觉这里可能存在一些危险.

每个进程写入输出文件的不相交子集(即,正在写入的块中没有重叠).例如,P1仅写入文件的前50%,P2仅写入第二个50%.或者P1P2写入偶数块时可能只写入奇数块.

拥有P1P2(在不同的线程上同时运行)写入同一文件而不使用任何锁定是否安全?换句话说,文件系统是否隐式强加了某种锁定?

注意:遗憾的是,我不能随意输出多个文件并在以后加入.

注意:自发布此问题以来,我的阅读与下面仅发布的答案不一致.我读过的所有内容都表明我想做的事情很好,而下面的受访者坚持认为我所做的是不安全的,但我无法辨别所描述的危险.

filesystems multiprocessing seek

47
推荐指数
2
解决办法
5万
查看次数

Python内存消耗:dict VS元组列表

关于不同python数据类型的内存消耗有很多问题和讨论.然而,其中很少(如果有的话)来到一个非常具体的场景.当你想在内存中存储很多键值数据时,哪个数据结构更节省内存,dict还是一个元组列表?

一开始我认为dict比元组列表更强大,并且权力必须有一些代价,实际上一个空的dict占用的内存比空列表或元组更多(参见Python结构的内存大小),所以我以为使用[(key1, value1), (key2, value2), ...]会比内存更有效{key1: value1, key2: value2, ...}.

看起来我错了.只需启动以下代码段,然后查看操作系统报告的内存消耗情况.我正在使用Windows XP,以便任务管理器告诉我,一个大字典只吃"40MB Ram和40MB VIRTURAL Ram",但是一个元组列表吃掉了60MB Ram和60MB Virtual ram.

怎么会这样?

from sys import getsizeof as g
raw_input('ready, press ENTER')
i = 1000000
#p = [(x, x) for x in xrange(i)] # Will print 4,348,736 40,348,736
p = dict((x, x) for x in xrange(i)) # Will print 25,165,964 37,165,964
print g(p), g(p) + sum(g(x) for x in p)
raw_input("Check your process's memory consumption now, press ENTER …
Run Code Online (Sandbox Code Playgroud)

python memory dictionary tuples list

22
推荐指数
2
解决办法
2万
查看次数

REST API中的HTTP状态代码,用于使用GET查询"尚未准备好,稍后再试"资源?

首先,我读了一些相关的帖子:

但我仍然认为我应该在这里提出我的问题和想法.REST API中的HTTP状态代码应该是什么?使用GET到QUERY"未准备好,稍后再试"资源?例如,客户端尝试通过对此URL进行HTTP GET来查询将来发生的所有本地新闻(!):http://example.com/news?city = chicago& date = 2099-12-31那么服务器应该回复什么?

这些是我考虑的http状态代码,它们的rfc定义以及为什么我不完全满意:

  • 3xx重定向.注释:不是一个选项,因为没有其他链接可以重定向到.

  • 503服务不可用:由于服务器临时过载或维护,服务器当前无法处理请求.这意味着这是一个暂时的条件,经过一段时间的延迟后会得到缓解.如果已知,则可以在Retry-After报头中指示延迟的长度.注释:需要重试行为,但从语义上讲,情况根本不是服务器的错误,因此所有5xx看起来都很奇怪.

  • 4xx客户端错误.评论:看起来很有希望 见下文.

  • 413请求实体太大:服务器拒绝处理请求,因为请求实体大于服务器愿意或能够处理的请求实体....如果条件是临时的,服务器应该包括一个Retry-After头字段,以指示它是临时的,以及客户端可以再次尝试的时间.注释:需要重试行为,但"实体太大"部分有些误导.

  • 417期望失败:此服务器无法满足Expect请求标头字段(请参阅第14.20节)中给出的期望.注释:所以它应该是由Expect请求标头引起的,不适用于我的情况.

  • 406 Not Acceptable:资源...根据请求中发送的accept头不可接受.注释:所以它是由Accept request-header引起的,不适用于我的情况.

  • 409冲突:由于与资源的当前状态发生冲突,无法完成请求.此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许....响应PUT请求最有可能发生冲突.评论:这个很接近.虽然我的情况不是关于PUT,实际上并不是由冲突造成的.

  • 404 Not Found:服务器未找到与Request-URI匹配的任何内容.评论:从技术上讲,我的网址路径(http://example.com/news)存在,它是导致问题的参数.在这种情况下,返回空集合而不是404,可能更合适.

  • 403 Forbidden:服务器理解请求,但拒绝履行请求.授权无效,请求不应重复.评论:通常这应该用于任何受限制的资源?

  • 400错误请求:由于语法格式错误,服务器无法理解请求.客户端不应该在没有修改的情况下重复请求.评论:在我的案例中并非如此.我的服务器理解请求,它的语法很好,只有意思不好.

  • 2xx成功.评论:如果4xx不起作用,2xx怎么样?见下文.

  • 200好的.评论:很好.那么我应该在响应体中包含什么呢?null或[]或{}或{"date":"2099-12-31","content_list":null}或者......哪一个更直观?另一方面,我更喜欢一种方法,以明确区分未成年人"未来新闻"错误与更常​​见的"所有查询标准都很好,这一天没有新闻"的情况.

  • 202 Accepted:已接受请求进行处理,但处理尚未完成.该请求最终可能会或可能不会被采取行动.注释:假设我们可以在GET请求中使用202,则可以接受.然后参考200评论.

  • 204 No Content:服务器已完成请求,但不需要返回实体.注释:假设我们可以在GET请求中使用204,则可以接受.只是不知道这是否优于202或200.

  • 更多关于2xx: …

rest http-get

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

如何在角度的局部视图中跳转到锚点?

我在很长的列表视图中有很多项目.我的用户如何通过访问mypage.html#the_item_id跳转到(即书签)特定项目?

实际上,它可以在我使用内联视图[样本1]时使用,但在使用局部视图[样本2]时则不行.在后一种情况下是否存在错误,或者我必须使用任何解决方法吗?

提前致谢!

示例1:您可以访问page.html#a100查看项目100 ::

<!doctype html>
<html ng-app>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script>
    <script>
        function MainCtrl($scope){
            $scope.items = [];
            for(var i=0; i<200; i++){$scope.items.push({id: i})}
        }
    </script>
  </head>
  <body ng-controller='MainCtrl'>
    <div>
      <ul>
        <li ng-repeat="i in items"><a id='a{{i.id}}'>{{i.id}}</a></li>
      </ul>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

示例2:无法访问page2.html#a100查看项目100,为什么?::

<!doctype html>
<html ng-app>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script>
    <script>
        function MainCtrl($scope){
            $scope.items = [];
            for(var i=0; i<200; i++){$scope.items.push({id: i})}
        }
    </script>
  </head>
  <body ng-controller='MainCtrl'>
    <div ng-include="'scroll_view.html'"><!-- MUST use "'...'" notation here --></div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是样本2所需的scroll_view.html ::

<div>
  <ul>
    <li ng-repeat="i in …
Run Code Online (Sandbox Code Playgroud)

angularjs

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

在读取多个配置文件时,ConfigParser会覆盖以前的文件,为什么?

所以我想首先说我一直在寻找SO的答案,并且找不到任何有用的东西.我也查看了Python的文档,但未能找到有用的东西.我的上一个问题有点懒,收到负面反馈,所以我尽我所能在这里提出一个简单明了的问题.一如既往,提前感谢您的帮助!

那么,有人可以解释我在Python的ConfigParser中遇到的奇怪行为.我有两个不同的配置文件,每个都有一个Section 1.这两个文件具有不同数量的选项,但覆盖的选项数量较少.这是代码和输出:

第一个配置文件:test1.ini

[Section 1]
Option 1 : One
Option 2 : Two
Option 3 : None
Option 4 : Four
Run Code Online (Sandbox Code Playgroud)

第二个配置文件:test2.ini

[Section 1]
Option 1 : One
Option 2 : None
Option 3 : Three
Run Code Online (Sandbox Code Playgroud)

读取配置文件的驱动程序

from ConfigParser import SafeConfigParser

parser = SafeConfigParser()

def ParseThis(file, section):
    parser.read(file)

    for option in parser.options(section):
        print "\t" + option
        try:
            if parser.get(section, option) != 'None':
                print option + ": " + parser.get(section, option)
            else:
                print option + ": Option doesn't …
Run Code Online (Sandbox Code Playgroud)

python configparser

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

如何使用&nbsp;等实体解析HTML 在Python 2和Python 3中使用内置库ElementTree?

有时您想要解析一些格式合理的HTML页面,但是您不愿意引入额外的库依赖项,例如BeautifulSoup或lxml.因此,您可能希望首先尝试内置的ElementTree,因为它是一个标准库,它很快(在C中实现),并且它支持比基本HTMLParser更好的接口(例如XPATH支持).更不用说,HTMLParser有其自身的局限性.

ElementTree将工作,直到它遇到某些实体,例如&nbsp;,默认情况下不处理的实体.

import xml.etree.ElementTree as ET

html = '''<html>
    <div>Some reasonably well-formed HTML content.</div>
    <form action="login">
    <input name="foo" value="bar"/>
    <input name="username"/><input name="password"/>

    <div>It is not unusual to see &nbsp; in an HTML page.</div>

    </form></html>'''
et = ET.fromstring(html)
Run Code Online (Sandbox Code Playgroud)

在Python 2或Python 3上运行它,您将看到此错误:

xml.etree.ElementTree.ParseError: undefined entity: line 7, column 38
Run Code Online (Sandbox Code Playgroud)

那里有一些问答,比如这个那个问答.他们暗示使用ElementTree.XMLParser().parser.UseForeignDTD(True)但我无法在Python 3.3和Python 3.4中使用它.

$ python3.3
Python 3.3.5 (v3.3.5:62cf4e77f785, Mar  9 2014, 01:12:57) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type …
Run Code Online (Sandbox Code Playgroud)

html python parsing entity elementtree

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