小编iva*_*eev的帖子

获取生成UNIX信号的故障地址

我对一个信号处理程序感兴趣,它可以识别导致问题的指令的地址.

我知道siginfo_t并且__builtin_return_address似乎都没有工作:

#include <iostream>
#include <signal.h>

void handler (int, siginfo_t *, void *);

int main ()
{
begin:
    std :: cerr << &&begin << " ~ " << &&before << " ~ " << &&after << "\n";

    struct sigaction s;
    s .sa_flags = SA_SIGINFO;
    sigemptyset (& s .sa_mask);
    s .sa_sigaction = handler;
    sigaction (SIGSEGV, &s, NULL);

    int * i = NULL;
before:
    *i = 0;
after:
    std :: cout << "End.\n";
}

void handler (int, siginfo_t …
Run Code Online (Sandbox Code Playgroud)

c++ unix signals

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

全局解释器锁定和访问数据(例如,对于NumPy阵列)

我正在为Python编写一个C扩展,它应该在对数据进行操作时释放全局解释器锁.我认为我已经很好地理解了GIL的机制,但仍然存在一个问题:当线程不拥有GIL时,我可以访问Python对象中的数据吗?例如,我想从C函数中的(大)NumPy数组中读取数据,而我仍然希望允许其他线程在其他CPU内核上执行其他操作.C函数应该

  • 发布GIL Py_BEGIN_ALLOW_THREADS
  • 无需使用Python函数即可读取和处理数据
  • 甚至将数据写入先前构造的NumPy数组
  • 重新获取GIL Py_END_ALLOW_THREADS

这样安全吗?当然,其他线程不应该改变C函数使用的变量.但也许有一个隐藏的错误来源:Python解释器可以移动一个对象,例如.通过某种垃圾收集,而C函数在一个单独的线程中工作?

为了用最小的例子说明问题,请考虑下面的(最小但完整的)代码.用它编译它(在Linux上)

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -fPIC -I/usr/lib/pymodules/python2.7/numpy/core/include -I/usr/include/python2.7 -c gilexample.c -o gilexample.o
gcc -pthread -shared gilexample.o -o gilexample.so
Run Code Online (Sandbox Code Playgroud)

用Python测试它

import gilexample
gilexample.sum([1,2,3])
Run Code Online (Sandbox Code Playgroud)

是之间的代码Py_BEGIN_ALLOW_THREADSPy_END_ALLOW_THREADS安全吗?它访问Python对象的内容,我不想在内存中复制(可能很大)数组.

#include <Python.h>
#include <numpy/arrayobject.h>

// The relevant function
static PyObject * sum(PyObject * const self, PyObject * const args) {
  PyObject * X;
  PyArg_ParseTuple(args, "O", &X);
  PyObject const * const X_double = PyArray_FROM_OTF(X, NPY_DOUBLE, NPY_ALIGNED);
  npy_intp const size = PyArray_SIZE(X_double);
  double * const …
Run Code Online (Sandbox Code Playgroud)

python numpy python-c-api

7
推荐指数
2
解决办法
2248
查看次数

"应用程序配置不正确"和"并行配置不正确"运行VS2008 64位调试版本

我正在使用64位操作系统Windows 7终极机VS2008 64位插件.

我已经在32位和64位,调试和发布配置中成功构建了我的项目.64位调试没有启动; 它给出了错误:

无法启动程序xxx此应用程序无法启动,因为应用程序配置不正确.查看清单文件以查找可能的错误.重新安装应用程序可能会解决此问题.有关更多零售,请参阅应用程序事件日志

我运行了依赖性walker.从redistibutable路径C:\ Program Files(x86)\ Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT我添加了Microsoft.VC90.DebugCRT.manifest msvcm90d msvcp90d msvcr90d Microsoft.VC90.DebugOpenMP vcomp90d. sll在我的解决方案的bin\debug文件夹中.

最后,依赖者walker没有留下任何黄色标记(丢失的文件),但它仍然给出了如下错误:

错误:找不到至少一个必需的隐式或转发依赖项.错误:由于隐式依赖模块中缺少导出功能,至少有一个模块具有未解析的导入.错误:找到了具有不同CPU类型的模块.错误:"e:\ xyz.EXE"中的Side-by-Side配置信息包含错误.应用程序无法启动,因为它的并排配置不正确.请参阅应用程序事件日志或使用命令行sxstrace.exe工具获取更多详细信息(14001).

32位清单说:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" **processorArchitecture="x86"** publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>
Run Code Online (Sandbox Code Playgroud)

而64位调试清单具有:

 <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
Run Code Online (Sandbox Code Playgroud)

我无法理解的是,为什么调试32位构建成功运行?

请帮帮我,因为我已经检查了很多问题,但没有找到任何可行的解决方案.

c++ 64-bit debug-build manifest visual-studio-2008

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

你如何在shell中获得clock_gettime(2)时钟?

我认为没有这样的选择 date

/proc/uptime 是基于引导的,而不是单调的.

最后我发现cat /proc/timer_list | grep now,ktime_get如果我理解正确的话,会产生nsecs的数量,通过它返回单调时间,但这非常麻烦.

update:返回的值必须与返回的值相同clock_gettime

linux time

7
推荐指数
3
解决办法
6684
查看次数

Facebook登录测试主机时"客户端OAuth设置中的URL未列入白名单"

我正在使用Facebook PHP SDK来实现与facebook的登录.我想先在当地测试一下.我创建了一个测试应用程序,我尝试了很多东西,但仍然不适合我.

在我的本地,我配置了一个apache虚拟主机,以便我可以使用此URL访问我的本地Web应用程序:http://www.myapplocal.com

这是我在登录Facebook后得到的错误:

Given URL is not whitelisted in Client OAuth Settings: This redirect failed because the redirect URI is not whitelisted in the app’s Client OAuth Settings. Make sure Client and Web OAuth Login are on and add all your app domains as Valid OAuth Redirect URIs.
Run Code Online (Sandbox Code Playgroud)

以下是我在oauth设置部分的内容:

Client OAuth Login: yes
Web OAuth Login: yes
Force Web OAuth Reauthentication: no
Embedded Browser OAuth Login: no
Valid OAuth redirect URIs: http://www.myapplocal.com/index.php/facebook-login-callback
Login from Devices: …
Run Code Online (Sandbox Code Playgroud)

php facebook-php-sdk

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

Tox警告:找到测试命令但未在testenv中安装

嘿家伙所以我基本上使用tox来完成我的项目.

这是我的tox.ini文件

[tox]
envlist =
    py27,
    lint,
    coverage

skipsdist = True

[testenv:py27]
deps = -rrequirements.txt
commands = python -m unittest discover -s ./tests

[testenv:coverage]
commands =
    coverage run --source=tests -m unittest discover -s tests/
    coverage html
    coverage report


[testenv:lint]
commands = pylint ./foo
Run Code Online (Sandbox Code Playgroud)

每当我运行tox时,一切都在执行,基本上是linting,coverage.

但Tox正在显示所有事情的警告.

WARNING:test command found but not installed in testenv
Maybe you forgot to specify a dependency? See also the whitelist_externals envconfig setting.
Run Code Online (Sandbox Code Playgroud)

一切都成功但它仍然显示警告和错误

任何人都可以告诉我我做错了什么.

我的requirements.txt文件

requests==2.18.4
JsonForm==0.0.2
jsonify==0.5
jsonschema==2.6.0
JsonSir==0.0.2
python-dateutil==1.5
DateTime==4.2
urllib3==1.22
contextlib2==0.5.5
mock==2.0.0
patch==1.16
Run Code Online (Sandbox Code Playgroud)

python unit-testing pylint tox

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

COM错误?两次打开工作簿会导致参考文献被破坏

感谢fuglede提出这个我注意:

这是一个COM错误吗?

我打开Excel工作簿A,然后打开工作簿B(两个都在单元格A1中有一些标识文本).

然后我再次尝试打开工作簿A并将该引用保存在一个新变量中a2.但a2现在指向工作簿B!

使用win32com在Python中重现了这种完全相同的行为.所以这不是一个特别的VBA问题,而是更普遍的COM问题.(也就是说,也可能是在C#等,但尚未确认.)

到底是怎么回事?

VBA代码:( Python win32com代码类似.)

'Open a couple of workbooks
Dim a As Workbook, b As Workbook, a2 As Workbook
Debug.Print "Set a = a.xlsx..."
Set a = Application.Workbooks.Open("H:\a.xlsx")
Debug.Print "a:  " & a.Name
Debug.Print "Set b = b.xlsx..."
Set b = Application.Workbooks.Open("H:\b.xlsx")
Debug.Print "b:  " & b.Name
Debug.Print "a:  " & a.Name

'Attempt to re-open workbook a.xlsx and keep reference in a new variable
Debug.Print "Set a2 = a.xlsx..." …
Run Code Online (Sandbox Code Playgroud)

com excel vba

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

如何在没有控制台窗口的情况下在Windows上启动最近的Jupyter QtConsole

这个较旧的问题似乎已过时.

它曾经是(基于阅读git reposqtconsole问题跟踪器)你可以启动Jupyter QtConsole而不需要运行背景的控制台窗口:

pythonw -m jupyter qtconsole

但是,在最近的Jupyter版本中,这仍然会启动后台控制台窗口.

在此输入图像描述

我想知道是否有人知道如何在没有烦人的控制台窗口的情况下启动QtConsole.我知道你可以从Anaconda Navigator程序中做到这一点,但我不想启动一个程序,以便我可以启动另一个程序.我更喜欢有一个简单的批处理脚本甚至是python脚本,以便我可以使用"开始"菜单快捷方式启动

直接运行模块也不起作用:

pythonw -c "from qtconsole.qtconsoleapp import main; main()"

这仍然会启动一个新的控制台窗口,如图所示,所以我真的不知道这是否可能以某种直接的方式,或者如果Anaconda Navigator正在做一些黑魔法来实现这一点

python windows qtconsole anaconda jupyter

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

[Microsoft][ODBC Driver 17 for SQL Server]登录超时已过期 (0) (SQLDriverConnect)')

我无法使用 python 从 Unix 连接到 SQL 服务器。

我将无法将驱动程序从 ODBC Driver 17 for SQL Server 替换为 ODBC Driver 13 for SQL Server,如Pyodbc:由于其他依赖项导致的登录超时错误中所述。

有人可以建议一个替代方案吗?

代码:

import sqlalchemy as sa

from urllib import parse as db_parse

from sqlalchemy import event

params = db_parse.quote_plus(r"DRIVER={ODBC Driver 17 for SQL Server};SERVER='server,port';DATABASE=DB_NAME;username=USER_ID;password=PWD;Trusted_Connection=yes")

engine = sa.create_engine('mssql+pyodbc:///?odbc_connect={}'.format(params))

connection = engine.connect()
Run Code Online (Sandbox Code Playgroud)

错误:

sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)') (Background on this error at: http://sqlalche.me/e/e3q8)
Run Code Online (Sandbox Code Playgroud)

python sql-server pyodbc

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

尝试在正则表达式中转义括号时收到 PEP8“无效转义序列”警告

我正在尝试转义这样的字符串:

string = re.split(")(", other_string)
Run Code Online (Sandbox Code Playgroud)

因为不转义这些括号会给我一个错误。但如果我这样做:

string = re.split("\)\(", other_string)
Run Code Online (Sandbox Code Playgroud)

我收到来自 PEP8 的警告,说这是一个无效的转义序列。有没有办法正确地做到这一点?

将 'r' 放在字符串前面并不能修复它。

python regex pep8 python-re

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