小编Vee*_*rac的帖子

Mutex示例/教程?

我是多线程的新手,并试图了解互斥锁的工作原理.很多谷歌和我找到了一个体面的教程,但它仍然有一些怀疑它是如何工作的,因为我创建了自己的程序,其中锁定不起作用.

互斥体的一个绝对非直观的语法是pthread_mutex_lock( &mutex1 );,当看起来互斥锁被锁定时,我真正想要锁定的是其他变量.这种语法是否意味着锁定互斥锁会锁定代码区域,直到互斥锁被解锁?然后线程如何知道该区域被锁定?[ 更新:线程知道该区域被 内存屏蔽锁定 ].这种现象应该被称为临界区吗?[ 更新:关键部分对象仅在Windows中可用,其中对象比互斥锁更快,并且仅对实现它的线程可见.否则,临界区只是指由互斥锁保护的代码区域 ]

简而言之,您能否帮助解决最简单的互斥示例程序以及关于它如何工作的逻辑的最简单的解释?我相信这会帮助很多其他新手.

c c++ multithreading synchronization mutex

165
推荐指数
7
解决办法
23万
查看次数

在Python中查找列表的中位数

你如何在Python中找到列表的中位数?该列表可以是任何大小,并且不保证数字具有任何特定顺序.

如果列表包含偶数个元素,则该函数应返回中间两个的平均值.

以下是一些示例(按显示目的排序):

median([1]) == 1
median([1, 1]) == 1
median([1, 1, 2, 4]) == 1.5
median([0, 2, 5, 6, 8, 9, 9]) == 6
median([0, 0, 0, 0, 4, 4, 6, 8]) == 2
Run Code Online (Sandbox Code Playgroud)

python sorting list median

160
推荐指数
11
解决办法
38万
查看次数

为什么迭代一个小字符串比一个小列表慢?

我正在玩timeit并注意到对一个小字符串做一个简单的列表理解比在一个小的单个字符串列表上做同样的操作要花费更长的时间.任何解释?这几乎是1.35倍的时间.

>>> from timeit import timeit
>>> timeit("[x for x in 'abc']")
2.0691067844831528
>>> timeit("[x for x in ['a', 'b', 'c']]")
1.5286479570345861
Run Code Online (Sandbox Code Playgroud)

在较低的水平上发生了什么导致这种情况?

python performance cpython timeit python-internals

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

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

将Pandas DataFrame的行转换为列标题,

我必须处理的数据有点乱.它的数据中包含头名.如何从现有的pandas数据框中选择一行并将其(重命名为)列标题?

我想做的事情如下:

header = df[df['old_header_name1'] == 'new_header_name1']

df.columns = header
Run Code Online (Sandbox Code Playgroud)

python rename dataframe pandas

82
推荐指数
5
解决办法
15万
查看次数

修复C++中的分段错误

我正在为Windows和Unix编写一个跨平台的C++程序.在Window端,代码将编译并执行没有问题.在Unix方面,它会编译然而当我尝试运行它时,我得到一个分段错误.我最初的预感是指针存在问题.

找到并修复分段错误错误的好方法是什么?

c++ debugging segmentation-fault

72
推荐指数
4
解决办法
9万
查看次数

C/C++主函数的参数在哪里?

在C/C++中,main函数接收类型的参数char*.

int main(int argc, char* argv[]){
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

argv是一个数组char*,并指向字符串.这些字符串在哪里?它们是堆,堆栈还是其他地方?

c c++ parameters location program-entry-point

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

使用Sublime Text 3设置Python 3构建系统

我想配置Sublime Text 3来构建Python 3,但我似乎不明白构建是如何工作的.许多教程告诉我制作一个包含以下代码的构建文件:

{
    'cmd': ['/usr/bin/python3', '-u', '$file'],
    'file_regex': '^[ ]*File "(…*?)", line ([0-9]*)',
    'selector': 'source.python'
}
Run Code Online (Sandbox Code Playgroud)

并将其保存为一个名为Python.sublime-build或的文件python3.sublime-build(我发现的大部分信息都是冲突的).一个教程建议在ST3 Packages文件夹中创建一个新文件夹,Python并在其中添加构建文件,而其他教程建议将其保留在名为的文件夹中User.

一个教程解释了我如何path在操作系统上更改环境变量以使其工作.这似乎也没有帮助.


我添加了一个文件夹PythonPackages(因为它是不存在的话),并在名为构建文件添加Python.sublime_build该功能只在我上面贴的代码.现在当我尝试运行Sublime Text时,它给了我这个错误:

Error trying to parse build system:
Expected value in Packages\Python\Python.sublime-build:2:5
Run Code Online (Sandbox Code Playgroud)

python python-3.x sublimetext3

51
推荐指数
4
解决办法
11万
查看次数

SQL主键:整数与varchar

我正在使用的团队决定使用varchar主键创建一个表.此表由此主键上的另一个表引用.

我有习惯按照我在大学学到的东西来创建一个整数主键.我已经读过使用整数主键可以提升性能.

问题是我不知道创建整数主键的任何其他原因.你有什么建议吗?

sql indexing performance

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

从Python调试器列出理解范围错误

在调试我的代码时,我想使用列表理解.但是,当我在函数内部时,似乎无法从调试器中评估列表理解.

我使用的是Python 3.4.

脚本内容:

$ cat test.py 
#!/usr/bin/python

def foo():
    x = [1, 2, 3, 3, 4]

    print(x)

foo()
Run Code Online (Sandbox Code Playgroud)

交互式调试:

$ python3 -mpdb test.py                                                                                                                                           
> /tmp/test.py(3)<module>()
-> def foo():
(Pdb) step
> /tmp/test.py(8)<module>()
-> foo()
(Pdb) 
--Call--
> /tmp/test.py(3)foo()
-> def foo():
(Pdb) 
> /tmp/test.py(4)foo()
-> x = [1, 2, 3, 3, 4]
(Pdb) 
> /tmp/test.py(6)foo()
-> print(x)
(Pdb) p [x for _ in range(1)]
*** NameError: name 'x' is not defined
(Pdb) p x
[1, 2, 3, 3, …
Run Code Online (Sandbox Code Playgroud)

python debugging list-comprehension python-3.x

26
推荐指数
3
解决办法
2105
查看次数