Articles of python

我怎样才能从Python程序发送信号?

我有这个听USR1信号的代码 import signal import os import time def receive_signal(signum, stack): print 'Received:', signum signal.signal(signal.SIGUSR1, receive_signal) signal.signal(signal.SIGUSR2, receive_signal) print 'My PID is:', os.getpid() while True: print 'Waiting…' time.sleep(3) 当我用kill -USR1 pid发送信号时,这是有效的 但是我怎样才能从上面的python脚本发送相同的信号,以便在10秒后它自动发送USR1 ,并接收它,而不必打开两个terminal来检查它?

如何在python中find文件或目录的所有者

我需要Python中的函数或方法来查找文件或目录的所有者。 该function应该是这样的: >>> find_owner("/home/somedir/somefile") owner3

Python上的Python模块错误

我正在Linux Mint 16上使用python 2.7。如果我从程序启动器(例如从Alt F2的提示符或桌面上的图标快捷方式)运行我的IDE(在Spyder和Pycharm上尝试它),我正面临一个错误。该模块不加载,我得到以下错误 文件“/usr/local/lib/python2.7/dist-packages/gurobipy/__init__.py”,第1行,在 从.gurobipy导入* ImportError:libgurobi56.so:无法打开共享目标文件:没有这样的文件或目录 但是,如果我从命令行运行程序模块加载正确,程序运行良好。 我只有一个安装每个IDE。 这两个实例的sys.path输出如下所示: sys.path输出为Pycharm从快捷方式运行: /home/XXXXXX/bin/pycharm-community-3.1.3/helpers/pydev','/usr/local/lib/python2.7/dist-packages/pip-1.5.5-py2.7.egg',' /usr/lib/python2.7','/usr/lib/python2.7/plat-x86_64-linux-gnu','/usr/lib/python2.7/lib-tk','/ usr / lib / python2.7 / lib-old','/usr/lib/python2.7/lib-dynload','/usr/local/lib/python2.7/dist-packages','/usr/lib/python2.7 / dist-packages','/usr/lib/python2.7/dist-packages/PILcompat','/usr/lib/python2.7/dist-packages/gtk-2.0','/ home / XXXXXX / PycharmProjects / untitled8' ] 从命令行运行pycharm的sys.path oyutput: /home/XXXXXX/bin/pycharm-community-3.1.3/helpers/pydev','/usr/local/lib/python2.7/dist-packages/pip-1.5.5-py2.7.egg',' /usr/lib/python2.7','/usr/lib/python2.7/plat-x86_64-linux-gnu','/usr/lib/python2.7/lib-tk','/ usr / lib / python2.7 / lib-old','/usr/lib/python2.7/lib-dynload','/usr/local/lib/python2.7/dist-packages','/usr/lib/python2.7 / dist-packages','/usr/lib/python2.7/dist-packages/PILcompat','/usr/lib/python2.7/dist-packages/gtk-2.0','/ home / XXXXXX / PycharmProjects / untitled8' ] 包gurobipy在/usr/lib/python2.7/dist-packages中 遵循gurobi包装的安装程序: 1)不要下载到/ […]

错误的Linux内存映射文件性能与随机访问C + +和Python

当尝试使用内存映射文件来创build一个多GB的文件(大约13GB)时,我遇到了mmap()似乎有问题的地方。 最初的实现是在Windows上使用boost :: iostreams :: mapped_file_sink在c ++上完成的,一切都很好。 然后代码在Linux上运行,在Windows上花费几分钟的时间在Linux上变成几小时。 这两台机器是相同硬件的克隆:戴尔R510 2.4GHz 8Mcaching16GB内存1TB磁盘PERC H200控制器。 Linux是使用3.8内核和g ++ 4.83的Oracle Enterprise Linux 6.5。 有一些担心,boost库可能存在问题,所以实现是使用boost :: interprocess :: file_mapping完成的,再次使用本地mmap()。 所有三个显示相同的行为。 当Linux性能下降严重时,Windows和Linux性能达到一定程度。 完整的源代码和性能数字链接如下。 // C++ code using boost::iostreams void IostreamsMapping(size_t rowCount) { std::string outputFileName = "IoStreamsMapping.out"; boost::iostreams::mapped_file_params params(outputFileName); params.new_file_size = static_cast<boost::iostreams::stream_offset>(sizeof(uint64_t) * rowCount); boost::iostreams::mapped_file_sink fileSink(params); // NOTE: using this form of the […]

Linux上的Python内存消耗:物理和虚拟内存正在增长,而堆大小保持不变

我正在使用Python编写某种系统服务(实际上它只是一个日志parsing器)。 这个程序应该持续工作很长一段时间(希望我的意思是几天,几周没有失败,需要重新启动)。 这就是为什么我关心内存消耗。 我将来自不同站点的进程内存使用情况的不同信息放到一个简单的函数中: #!/usr/bin/env python from pprint import pprint from guppy import hpy from datetime import datetime import sys import os import resource import re def debug_memory_leak(): #Getting virtual memory size pid = os.getpid() with open(os.path.join("/proc", str(pid), "status")) as f: lines = f.readlines() _vmsize = [l for l in lines if l.startswith("VmSize")][0] vmsize = […]

apt-get安装不同的python版本

我有Ubuntu的默认情况下与python2.6 10.04。 我已经安装了python2.7。 当我想要安装Python包 apt-get python-<package> 它被安装到python2.6。 我怎样才能把它安装到python2.7? 有什么select吗? 我已经看了这个 ,但我无法在我的操作系统中find这样的目录。 我已经考虑使用easy_install-2.7 ,但并不是所有的软件包都受支持。 例如python-torctl 。 我更感兴趣的是用apt-get install来绑定python2.7。

certificate强可能素数的素数

使用Miller-Rabintesting的概率版本,我生成了一个大中(200-300位)的可能素数列表。 但可能不够好! 我需要知道这些数字是素数。 有没有一个库(最好是用Python包装或包装),实现了一个更高效的素数validationalgorithm? 另外,有没有人知道我在哪里可以find一个清晰 , 详细 , 完整的ECPP(或类似的快速algorithm)的描述,不承担大量的先验知识? 更新:我发现了另一个testingAPRT-CLE的Java实现 ,最终certificate了素数。 它在一个primefaces处理器上在10分钟内核实了一个291位的主要候选人。 仍然希望更快一些,但这似乎是一个有希望的开始。

你可以欺骗isatty并单独loginstdout和stderr吗?

问题 所以你要logging一个进程或subprocess的stdout和stderr(单独的),如果你没有logging任何东西,输出和你在terminal中看到的不一样。 似乎很简单没有? 不幸的是,似乎不可能为这个问题写出一个通用的解决scheme,这对任何给定的过程都有效。 背景 pipe道redirect是分离标准输出和标准错误的一种方法,允许您单独logging它们。 不幸的是,如果将stdout / err更改为pipe道,则进程可能会检测到pipe道不是tty(因为它没有宽度/高度,波特率等),并可能相应地改变其行为。 为什么改变行为? 那么,有些开发人员利用terminal的function,如果你正在写出一个文件,这是没有意义的。 例如,加载栏通常需要将terminal光标移回到行的开始位置,并使用新长度的栏来覆盖以前的加载栏。 颜色和字体重量也可以显示在terminal中,但是在平面ASCII文件中不能。 如果要将这样一个程序的标准输出直接写入文件,则该输出将包含所有terminal的ANSI转义码,而不是格式正确的输出。 因此,开发人员在向stdout / err写入任何内容之前都会执行某种“isatty”检查,因此如果该检查返回false,则可以为文件提供更简单的输出。 这里通常的解决scheme是欺骗这样的程序,通过使用一个pty(一个双向pipe道,也有宽度,高度等等)来认为pipe道实际上是tty。你将进程的所有input/输出redirect到这个pty,处理成思考它与真实的terminal交谈(你可以直接把它logging到文件中)。 唯一的问题是,通过使用stdout和stderr的单个pty,我们现在不能再区分这两者了。 所以你可能想为每个pipe道尝试一个不同的pty,一个是stdin,一个是stdout,另一个是stderr。 虽然这将在50%的时间内运行,但许多进程不幸的是会执行额外的redirect检查,以确保stdout和stderr(/ dev / tty000x)的输出path是相同的。 如果它们不是,那么必须有redirect,因此它们会给你一样的行为,就好像你已经用stdout和stdout没有pty一样。 你可能会认为这种redirect检查是不常见的,但不幸的是,这实际上是非常普遍的,因为很多程序都重复使用其他代码来检查,就像在OSX中find这样的代码: http://src.gnu-darwin.org/src/bin/stty/util.c 挑战 我认为寻找解决scheme的最佳方式是以挑战的forms。 如果任何人都可以运行下面的脚本(理想情况下通过Python,但在这一点上我会采取任何东西),stdout和stderr分别logging,你设法愚弄它认为它是通过一个tty,你解决了这个问题:) #!/usr/bin/python import os import sys if sys.stdout.isatty() and sys.stderr.isatty() and os.ttyname(sys.stdout.fileno()) == os.ttyname(sys.stderr.fileno()): sys.stdout.write("This is a") sys.stderr.write("real tty :)") else: sys.stdout.write("You cant fool me!") sys.stdout.flush() […]

我如何捕获mouseevents和keyevents在Linux上使用python背景

我想制作一个可以在后台运行的python脚本,但是在mouseevent或keyevent发生时打印文本。 有没有任何库/内置function来实现这一点? 或者我可以调用任何系统命令来获取这些信息? 作为根是没有问题的。

安装没有根的Python 2.7

我试图在远程linux机器上安装没有root的Python 2.7。 我跑了命令 ./configure prefix=/ make install DESTDIR=/xxx/yyy/ 其中/ xxx / yyy /是我有读写权限的目录。 最后我遇到了一个问题。 它说: 使用gdbm构builddbm INFO:找不到Tcl / Tk库和/或头文件 Python编译完成,但没有find构build这些模块的必要位:_tkinter bsddb185 dl imageop sunaudiodev要find必要的位,请在detect_modules()的setup.py中查找模块的名称。 运行build_scripts运行install_lib创build/lib/python2.7错误:无法创build'/lib/python2.7':权限被拒绝 我没有正确的步骤安装它没有root权限? (即,我的configuration和make命令?)谁能告诉我为什么它不会正确安装? 谢谢, KTM