小编Bas*_*ani的帖子

Python中的memoryview究竟是什么意思

检查内存视图上的文档:

memoryview对象允许Python代码访问支持缓冲区协议的对象的内部数据而无需复制.

class memoryview(obj)

创建一个引用obj的内存视图.obj必须支持缓冲协议.支持缓冲区协议的内置对象包括bytes和bytearray.

然后我们给出示例代码:

>>> v = memoryview(b'abcefg')
>>> v[1]
98
>>> v[-1]
103
>>> v[1:4]
<memory at 0x7f3ddc9f4350>
>>> bytes(v[1:4])
b'bce'
Run Code Online (Sandbox Code Playgroud)

报价结束,现在让我们仔细看看:

>>> b = b'long bytes stream'
>>> b.startswith(b'long')
True
>>> v = memoryview(b)
>>> vsub = v[5:]
>>> vsub.startswith(b'bytes')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'memoryview' object has no attribute 'startswith'
>>> bytes(vsub).startswith(b'bytes')
True
>>> 
Run Code Online (Sandbox Code Playgroud)

所以我从上面收集的内容:

我们创建一个memoryview对象来公开缓冲区对象的内部数据而不进行复制,但是,为了对对象做任何有用的事情(通过调用对象提供的方法),我们必须创建一个副本!

当我们有一个大对象时,通常需要memoryview(或旧的缓冲区对象),并且切片也可能很大.如果我们正在制作大切片,或者制作小切片但需要很多次,则需要提高效率.

有了上述方案,我看不出它对两种情况都有用,除非有人能向我解释我在这里缺少的东西.

EDIT1:

我们有大量数据,我们希望通过从头到尾推进它来处理它,例如从字符串缓冲区的开头提取标记,直到缓冲区被消耗.在C语言中,这是推进指针通过缓冲区,指针可以传递给任何期望缓冲区类型的函数.如何在python中完成类似的事情?

人们建议使用变通方法,例如许多字符串和正则表达式函数采用可用于模拟推进指针的位置参数.这有两个问题:首先是一个解决方法,你被迫改变你的编码风格来克服缺点,第二个:并非所有函数都有位置参数,例如正则表达式函数和startswithdo,encode()/ …

python buffer memoryview

68
推荐指数
3
解决办法
3万
查看次数

Kotlin - 使用重复元素创建可变列表

什么n是以重复元素值v(例如listOf(4,4,4,4,4))作为表达式创建给定长度的可变列表的惯用方法.

我正在做val list = listOf((0..n-1)).flatten().map{v}但它只能创建一个不可变的列表.

list kotlin

35
推荐指数
4
解决办法
5699
查看次数

'显式推送时,你的分支超过'origin/master',提交1次'

我是git的新手,我无法理解以下行为:

我有一个bitbucket repo,我在本地克隆,然后我在本地修改和提交,然后我推送到远程仓库.如果我进行隐式推送或"推送起源",则没有问题.如果我使用显式远程URL推送,我会收到状态消息"你的分支超前'origin/master'由1 commit'提供.

似乎git不能将显式地址识别为与origin相同,所以究竟是怎么回事.如果我做另一个隐式推送,它什么都不做,但它确实清除了所述消息.

这是一个示例会话:

baz@bhost:/more/coding/git-tests/ask1$ git --version
git version 1.7.2.5

baz@bhost:/more/coding/git-tests$ git clone https://shishani@bitbucket.org/shishani/dirasi.git ask1
Cloning into ask1...
Password: 
remote: Counting objects: 24054, done.
remote: Compressing objects: 100% (6300/6300), done.
remote: Total 24054 (delta 17124), reused 24024 (delta 17106)
Receiving objects: 100% (24054/24054), 11.83 MiB | 251 KiB/s, done.
Resolving deltas: 100% (17124/17124), done.

baz@bhost:/more/coding/git-tests$ cd ask1

baz@bhost:/more/coding/git-tests/ask1$ jed setup.py

baz@bhost:/more/coding/git-tests/ask1$ git commit -a
[master a053f28]    modified:   setup.py
 1 files changed, 1 insertions(+), 0 deletions(-)

baz@bhost:/more/coding/git-tests/ask1$ git status …
Run Code Online (Sandbox Code Playgroud)

git

27
推荐指数
3
解决办法
8万
查看次数

是否有Java的交互式解释器?

我想从shell以交互方式执行java命令:有没有办法这样做?

java interpreter compilation

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

Python实例变量是否是线程安全的?

好的,首先检查以下代码:

class DemoClass():

    def __init__(self):
        #### I really want to know if self.Counter is thread-safe. 
        self.Counter = 0

    def Increase(self):
        self.Counter = self.Counter + 1

    def Decrease(self):
        self.Counter = self.Counter - 1

    def DoThis(self):
        while True:
            Do something

            if A happens:
                self.Increase()
            else:
                self.Decrease()

            time.sleep(randomSecs)

    def DoThat(self):
        while True:
            Do other things

            if B happens:
                self.Increase()
            else:
                self.Decrease()

            time.sleep(randomSecs)

    def ThreadSafeOrNot(self):
        InterestingThreadA = threading.Thread(target = self.DoThis, args = ())
        InterestingThreadA.start()

        InterestingThreadB = threading.Thread(target = self.DoThat, args = ())
        InterestingThreadB.start()
Run Code Online (Sandbox Code Playgroud)

我面临着和上面相同的情况.我真的想知道它是否是线程安全的 …

python multithreading thread-safety

20
推荐指数
3
解决办法
4万
查看次数

在Groovy中添加两个映射,同时汇总公共键的值

我在Groovy两个地图[a: 1, b: 2][b:1, c:3]并想从他们创造一个第三张地图[a: 1, b: 3, c: 3].是否有Groovy命令可以做到这一点?

编辑:请注意,如果键相同,则第三个映射中的值是前两个映射的值的总和.

谢谢

groovy dictionary

19
推荐指数
2
解决办法
8049
查看次数

致命:refspec的远程部分不是有效名称:capabilities ^ {}

从github克隆一个给定的repo,然后在bitbucket上推送一个新的repo,我得到错误:

> fatal: remote part of refspec is not a valid name in :capabilities^{}
> fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

这个错误意味着什么 - 以及它导致了什么(我还是git的新手).

这是日志:

- clone from github:
$ git clone git://github.com/ASKBOT/askbot-devel.git  test2
$ cd test2

- create a private git repo on bitbucket:
on the site GUI

- add remote:
$ git remote add bbtest2 https://shishani@bitbucket.org/shishani/test2.git

$ git remote -v
bbtest2 https://shishani@bitbucket.org/shishani/test2.git (fetch)
bbtest2 https://shishani@bitbucket.org/shishani/test2.git (push)
origin  git://github.com/ASKBOT/askbot-devel.git (fetch)
origin  git://github.com/ASKBOT/askbot-devel.git (push)

$ git branch -a
* …
Run Code Online (Sandbox Code Playgroud)

git github bitbucket

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

在Linux上预览unicode字体

Linux上是否有一个工具可以让我预览Unicode字体.Fontforge允许我查看可用的字形和Unicode范围,但显示非常粗糙.Gnome字体查看器仅显示拉丁语范围.

理想情况下,该工具将接受给定编码中的字符串,然后显示字符串的预览.

问候.

linux unicode fonts utility

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

HTML5 History.pushState修改了包含百分比编码的非Ascii(Unicode)字符的URL

在OSS Web应用程序中,我们有JS代码执行一些Ajax更新(使用jQuery,不相关).页面更新后,将调用html5历史记录界面History.pushState,代码如下:

var updateHistory = function(url) {
    var context = { state:1, rand:Math.random() };
    /* -----> bedfore the problem call <------- */
    History.pushState( context, "Questions", url );
    /* -----> after the problem call <------- */
    setTimeout(function (){
        /* HACK: For some weird reson, sometimes something overrides the above pushState so we re-aplly it
                 This might be caused by some other JS plugin.
                 The delay of 10msec allows the other plugin to override the URL.
        */
        History.replaceState( context, "Questions", …
Run Code Online (Sandbox Code Playgroud)

javascript html5 urlencode browser-history history.js

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

Netbeans键盘快捷键,用于在编辑器中导航到下一个错误标记

是否有任何键盘快捷键用于导航到Netbeans编辑器中的下一个错误(在错误条带中创建的红色标记)?

netbeans

12
推荐指数
2
解决办法
6432
查看次数