小编wim*_*wim的帖子

Python中的进程间通信

在两个不同的python进程之间进行进程间通信的干净而优雅的方法是什么?我目前在操作系统中使用命名管道,但感觉有点hacky.我用dbus服务重写了我的东西,但是看起来当通过SSH会话远程运行代码时,它现在尝试初始化X11,这对于我想要做的事情来说似乎完全没有必要(它们与GUI无关).所以也许dbus有点太重量了.我正准备再次使用套接字重新设计,但它看起来很低级,所以我认为可能有一个更高级别的模块我可以导入和使用,我根本就不知道它的名字,我想我应该问SO第一..

我的要求是能够运行python foo.py并让这个过程就像守护进程那样做,并能够发送消息给它python foo.py --bar.后一个调用应该只是向现有进程发送一个消息并终止,可能带有0成功的返回代码或其他失败的代码(因此需要进行一些双向通信).

python sockets ipc pipe

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

python中的整数平方根

在python或标准库中是否存在整数平方根?我希望它是准确的(即返回一个整数),并且如果没有解决方案则吠叫.

目前我推出了自己的天真的:

def isqrt(n):
    i = int(math.sqrt(n) + 0.5)
    if i**2 == n:
        return i
    raise ValueError('input was not a perfect square')
Run Code Online (Sandbox Code Playgroud)

但它很难看,我不相信大整数.如果我超过了这个值,我可以遍历正方形并放弃,但我认为做这样的事情会有点慢.另外我想我可能正在重新发明轮子,这样的东西肯定已经存在于python ......

python math integer sqrt

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

重新为自己分配名称

请注意这些线multiprocessing的标准库的程序包:

dict = dict
list = list
Run Code Online (Sandbox Code Playgroud)

将一些已经可用的名称重新绑定__builtins__到模块范围中有什么意义?它想要实现什么?我在git责备中搜索了一个解释,但这个提交很大,没有相关的评论.

python

51
推荐指数
1
解决办法
2432
查看次数

matplotlib后端 - 我在乎吗?

>>> import matplotlib
>>> print matplotlib.rcsetup.all_backends
[u'GTK', u'GTKAgg', u'GTKCairo', u'MacOSX', u'Qt4Agg', u'Qt5Agg', u'TkAgg', u'WX', u'WXAgg', u'CocoaAgg', u'GTK3Cairo', u'GTK3Agg', u'WebAgg', u'nbAgg', u'agg', u'cairo', u'emf', u'gdk', u'pdf', u'pgf', u'ps', u'svg', u'template']
Run Code Online (Sandbox Code Playgroud)

看看所有这些后端!

我需要关心使用哪个后端吗?例如,如果我仅使用TkAgg后端开发和测试我的东西,并且其他人使用我的代码可能GTKAgg在他们的系统上使用后端,那么我的东西可能以我不会注意到的方式为他们打破 - 或者所有后端都需要更多或者更少"工作"同样的方式?

python backend matplotlib

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

Python range()和zip()对象类型

我理解函数如何在for循环中使用range()zip()可以使用.但是我希望range()输出一个列表 - 就像seq在unix shell中一样.如果我运行以下代码:

a=range(10)
print(a)
Run Code Online (Sandbox Code Playgroud)

输出是range(10),表明它不是列表而是不同类型的对象.zip()打印时有类似的行为,输出类似的东西

<zip object at "hexadecimal number">
Run Code Online (Sandbox Code Playgroud)

所以我的问题是它们是什么,有什么优势使它们成为现实,如何在没有循环的情况下将它们的输出发送到列表?

python iterator list range python-3.x

48
推荐指数
3
解决办法
8万
查看次数

重新排列numpy 2D数组的列

有没有办法将numpy 2D数组中列的顺序更改为新的任意顺序?例如,我有一个数组

array([[10, 20, 30, 40, 50],
       [ 6,  7,  8,  9, 10]])
Run Code Online (Sandbox Code Playgroud)

我想改成它,比方说

array([[10, 30, 50, 40, 20],
       [ 6,  8, 10,  9,  7]])
Run Code Online (Sandbox Code Playgroud)

通过应用排列

0 -> 0
1 -> 4
2 -> 1
3 -> 3
4 -> 2
Run Code Online (Sandbox Code Playgroud)

在列上.因此,在新矩阵中,我希望原始的第一列保持原位,第二列移动到最后一列,依此类推.

有一个numpy功能吗?我有一个相当大的矩阵,并期望得到更大的矩阵,所以我需要一个解决方案,如果可能的话,快速到位(排列矩阵是禁止的)

谢谢.

python arrays numpy edit-in-place

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

python mock - 在不妨碍实现的情况下修补方法

是否有一种干净的方法来修补对象,以便您assert_call*在测试用例中获得帮助程序,而无需实际删除操作?

例如,如何修改该@patch行以获得以下测试传递:

from unittest import TestCase
from mock import patch


class Potato(object):
    def foo(self, n):
        return self.bar(n)

    def bar(self, n):
        return n + 2


class PotatoTest(TestCase):

    @patch.object(Potato, 'foo')
    def test_something(self, mock):
        spud = Potato()
        forty_two = spud.foo(n=40)
        mock.assert_called_once_with(n=40)
        self.assertEqual(forty_two, 42)
Run Code Online (Sandbox Code Playgroud)

我可能会一起使用side_effect,但是我希望有一种更好的方法可以在所有函数,类方法,静态方法,未绑定方法等上以相同的方式工作.

python mocking

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

嵌套的f字符串

感谢David Beazley的推文,我最近发现新的Python 3.6 f字符串也可以嵌套:

>>> price = 478.23
>>> f"{f'${price:0.2f}':*>20s}"
'*************$478.23'
Run Code Online (Sandbox Code Playgroud)

要么:

>>> x = 42
>>> f'''-{f"""*{f"+{f'.{x}.'}+"}*"""}-'''
'-*+.42.+*-'
Run Code Online (Sandbox Code Playgroud)

虽然我很惊讶这是可能的,但我很遗憾这是多么实际,何时嵌套f字符串是有用的?这可以涵盖哪些用例?

注意:PEP本身没有提到嵌套f字符串,但是有一个特定的测试用例.

python string-formatting python-3.x python-3.6 f-string

44
推荐指数
6
解决办法
8765
查看次数

什么时候围绕一个元组需要括号?

是否有一个参考某处确定何时用括号括起元组是否需要?

这是最近让我感到惊讶的一个例子:

>>> d = {}
>>> d[0,] = 'potato'
>>> if 0, in d:
  File "<stdin>", line 1
    if 0, in d:
        ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

python syntax tuples

42
推荐指数
2
解决办法
6064
查看次数

从服务器删除所有数据库

我有一个服务器(SQL Server 2005)有超过300个数据库.我不想一个一个地右键单击并选择Delete.

如何轻松删除所有数据库?

sql sql-server sql-server-2005

40
推荐指数
3
解决办法
5万
查看次数