小编Pra*_*mar的帖子

免费如何知道免费多少?

在C编程中,您可以将任何类型的指针作为参数传递给free,它如何知道要释放的已分配内存的大小?每当我传递指向某个函数的指针时,我也必须传递大小(即10个元素的数组需要接收10作为参数来知道数组的大小),但我不必将大小传递给自由功能.为什么不,并且我可以在我自己的函数中使用相同的技术来避免需要购买数组长度的额外变量?

c size free pointers

361
推荐指数
4
解决办法
6万
查看次数

从路径中获取文件名

从路径获取文件名的最简单方法是什么?

string filename = "C:\\MyDirectory\\MyFile.bat"
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我应该得到"MyFile".没有延期.

c++ visual-c++

72
推荐指数
11
解决办法
17万
查看次数

ImportError:没有名为的模块 - Python

我有一个python应用程序具有以下目录结构:

src
 |
 +---- main
 |
 +---- util
 |
 +---- gen_py
         |
         +---- lib
Run Code Online (Sandbox Code Playgroud)

在包main中,我有一个名为MyServer.py的python模块,它有一个import语句,如:

from gen_py.lib import MyService
Run Code Online (Sandbox Code Playgroud)

为了使这个语句起作用,我将以下行放在MyServer.py的开头:

import sys
sys.path.append('../gen_py/lib')
Run Code Online (Sandbox Code Playgroud)

当我在终端中运行MyServer.py时,出现以下错误:

ImportError:没有名为gen_py.lib的模块

我在这里缺少什么?

python import

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

增长numpy数值数组的最快方法

要求:

  • 我需要从数据中增加一个任意大的数组.
  • 我可以猜测大小(大约100-200),但不能保证阵列每次都适合
  • 一旦它生长到它的最终大小,我需要对它进行数值计算,所以我宁愿最终得到一个2-D numpy数组.
  • 速度至关重要.例如,对于300个文件中的一个,update()方法被称为4500万次(大约需要150s),而finalize()方法被称为500k次(总共106s)...总共250s或者.

这是我的代码:

def __init__(self):
    self.data = []

def update(self, row):
    self.data.append(row)

def finalize(self):
    dx = np.array(self.data)
Run Code Online (Sandbox Code Playgroud)

我试过的其他事情包括以下代码......但这是waaaaay慢.

def class A:
    def __init__(self):
        self.data = np.array([])

    def update(self, row):
        np.append(self.data, row)

    def finalize(self):
        dx = np.reshape(self.data, size=(self.data.shape[0]/5, 5))
Run Code Online (Sandbox Code Playgroud)

以下是如何调用此示意图的示意图:

for i in range(500000):
    ax = A()
    for j in range(200):
         ax.update([1,2,3,4,5])
    ax.finalize()
    # some processing on ax
Run Code Online (Sandbox Code Playgroud)

python performance numpy

65
推荐指数
5
解决办法
6万
查看次数

python中函数的准确计时

我正在使用Windows上的python进行编程,并希望准确地测量函数运行所需的时间.我编写了一个函数"time_it",它接受另一个函数,运行它,并返回运行所花费的时间.

def time_it(f, *args):
    start = time.clock()
    f(*args)
    return (time.clock() - start)*1000
Run Code Online (Sandbox Code Playgroud)

我称之为1000次,并对结果取平均值.(最后的1000常量是以毫秒为单位给出答案.)

这个功能似乎有效,但我有这种唠叨的感觉,我做错了,通过这样做,我使用的时间超过了它运行时实际使用的功能.

是否有更标准或可接受的方式来做到这一点?

当我更改我的测试函数以调用打印以使其花费更长时间时,我的time_it函数返回平均2.5 ms,而cProfile.run('f()')返回并平均为7.0 ms.我认为我的功能会高估时间,如果有的话,这里发生了什么?

还有一点需要注意,它是我所关心的功能相对时间,而不是绝对时间,因为这显然会因硬件和其他因素而异.

python testing time profiling

62
推荐指数
7
解决办法
8万
查看次数

在使用Python下载之前获取文件大小

我正在从Web服务器下载整个目录.它工作正常,但我无法想象如何在下载之前获取文件大小以进行比较,如果它在服务器上更新了.这可以像我从FTP服务器下载文件一样吗?

import urllib
import re

url = "http://www.someurl.com"

# Download the page locally
f = urllib.urlopen(url)
html = f.read()
f.close()

f = open ("temp.htm", "w")
f.write (html)
f.close()

# List only the .TXT / .ZIP files
fnames = re.findall('^.*<a href="(\w+(?:\.txt|.zip)?)".*$', html, re.MULTILINE)

for fname in fnames:
    print fname, "..."

    f = urllib.urlopen(url + "/" + fname)

    #### Here I want to check the filesize to download or not #### 
    file = f.read()
    f.close()

    f = open (fname, "w")
    f.write (file) …
Run Code Online (Sandbox Code Playgroud)

python urllib

43
推荐指数
6
解决办法
4万
查看次数

将多个参数传递给std :: thread

我问的<thread>是C++ 11标准的库.

假设您有以下功能:

void func1(int a, int b, ObjA c, ObjB d){
    //blahblah implementation
}

int main(int argc, char* argv[]){
    std::thread(func1, /*what do do here??*/);
}
Run Code Online (Sandbox Code Playgroud)

你如何将所有这些参数传递给线程?我尝试列出如下参数:

std::thread(func1, a,b,c,d);
Run Code Online (Sandbox Code Playgroud)

但它抱怨说没有这样的构造函数.解决这个问题的一种方法是定义一个包装参数的结构,但还有另一种方法吗?

c++ multithreading c++11

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

对于Python程序员来说,有没有与Perl的CPAN相同的东西?

我现在正在学习Python,因为Django框架.我已经成为Perl程序员多年了,我已经习惯了Perl的工具.我真正想念的其中一件事是Perl的CPAN及其工具.Python中有什么相同的东西吗?我希望能够像CPAN一样简单地搜索,安装和维护Python模块.此外,还可以自动处理依赖关系的系统.我尝试通过从网站下载zip文件,解压缩它来安装Python模块,然后执行:

sudo python setup.py install

但它正在寻找另一个模块.现在,像我一样懒,我不喜欢追逐依赖等等,有一个简单的方法吗?

python perl

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

在列表列表中查找重复项

我正在使用Python 2.7,我正在尝试重复删除列表列表并合并重复项的值.

现在我有:

original_list = [['a', 1], ['b', 1], ['a', 1], ['b', 1], ['b', 2], ['c', 2], ['b', 3]]
Run Code Online (Sandbox Code Playgroud)

我想匹配每个嵌套列表的第一个元素,然后添加第二个元素的值.我想最终得到这个(最终列表的顺序无关紧要):

ideal_output = [['a', 2], ['b', 7], ['c', 2]]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有一些代码将根据每个嵌套列表的第一个元素找到重复值:

for item in original_list:
    matches = -1
    for x in original_list:
        if (item[0] == x[0]):
            matches += 1
    if matches >= 1: 
        if item[0] not in duplicates_list:
            duplicates_list.append(item[0])
Run Code Online (Sandbox Code Playgroud)

从这里我需要搜索original_list中的所有duplicates_list项并添加值,但我不确定最好的方法是什么.

python list python-2.7

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

我滥用不安全的PerformIO吗?

为了熟悉unsafePerformIO(如何使用它以及何时使用它),我实现了一个用于生成唯一值的模块.

这就是我所拥有的:

module Unique (newUnique) where

import Data.IORef
import System.IO.Unsafe (unsafePerformIO)

-- Type to represent a unique thing.
-- Show is derived just for testing purposes.
newtype Unique = U Integer
  deriving Show

-- I believe this is the Haskell'98 derived instance, but
-- I want to be explicit, since its Eq instance is the most
-- important part of Unique.
instance Eq Unique where
  (U x) == (U y) = x == y

counter :: IORef Integer …
Run Code Online (Sandbox Code Playgroud)

haskell unsafe-perform-io

23
推荐指数
4
解决办法
6127
查看次数