我对一个信号处理程序感兴趣,它可以识别导致问题的指令的地址.
我知道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) 我正在为Python编写一个C扩展,它应该在对数据进行操作时释放全局解释器锁.我认为我已经很好地理解了GIL的机制,但仍然存在一个问题:当线程不拥有GIL时,我可以访问Python对象中的数据吗?例如,我想从C函数中的(大)NumPy数组中读取数据,而我仍然希望允许其他线程在其他CPU内核上执行其他操作.C函数应该
Py_BEGIN_ALLOW_THREADSPy_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_THREADS和Py_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) 我正在使用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位构建成功运行?
请帮帮我,因为我已经检查了很多问题,但没有找到任何可行的解决方案.
我认为没有这样的选择 date
/proc/uptime 是基于引导的,而不是单调的.
最后我发现cat /proc/timer_list | grep now,ktime_get如果我理解正确的话,会产生nsecs的数量,通过它返回单调时间,但这非常麻烦.
update:返回的值必须与返回的值相同clock_gettime
我正在使用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) 嘿家伙所以我基本上使用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) 感谢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) 这个较旧的问题似乎已过时.
它曾经是(基于阅读git repos和qtconsole问题跟踪器)你可以启动Jupyter QtConsole而不需要运行背景的控制台窗口:
pythonw -m jupyter qtconsole
但是,在最近的Jupyter版本中,这仍然会启动后台控制台窗口.
我想知道是否有人知道如何在没有烦人的控制台窗口的情况下启动QtConsole.我知道你可以从Anaconda Navigator程序中做到这一点,但我不想启动一个程序,以便我可以启动另一个程序.我更喜欢有一个简单的批处理脚本甚至是python脚本,以便我可以使用"开始"菜单快捷方式启动
直接运行模块也不起作用:
pythonw -c "from qtconsole.qtconsoleapp import main; main()"
这仍然会启动一个新的控制台窗口,如图所示,所以我真的不知道这是否可能以某种直接的方式,或者如果Anaconda Navigator正在做一些黑魔法来实现这一点
我无法使用 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) 我正在尝试转义这样的字符串:
string = re.split(")(", other_string)
Run Code Online (Sandbox Code Playgroud)
因为不转义这些括号会给我一个错误。但如果我这样做:
string = re.split("\)\(", other_string)
Run Code Online (Sandbox Code Playgroud)
我收到来自 PEP8 的警告,说这是一个无效的转义序列。有没有办法正确地做到这一点?
将 'r' 放在字符串前面并不能修复它。