小编Tom*_*ton的帖子

Python子进程:打开文件太多

我正在使用子进程调用另一个程序并将其返回值保存到变量.此过程在循环中重复,并在几千次之后程序崩溃并出现以下错误:

Traceback (most recent call last):
  File "./extract_pcgls.py", line 96, in <module>
    SelfE.append( CalSelfEnergy(i) )
  File "./extract_pcgls.py", line 59, in CalSelfEnergy
    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
  File "/usr/lib/python3.2/subprocess.py", line 745, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.2/subprocess.py", line 1166, in _execute_child
    errpipe_read, errpipe_write = _create_pipe()
OSError: [Errno 24] Too many open files
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题非常感谢!

评论提供的代码:

cmd = "enerCHARMM.pl -parram=x,xtop=topology_modified.rtf,xpar=lipid27_modified.par,nobuildall -out vdwaals {0}".format(cmtup[1])
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
out, err = p.communicate()
Run Code Online (Sandbox Code Playgroud)

python subprocess

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

super().__ init __()中的'意外的关键字参数'

我正在写一个小文字游戏.在尝试定义类变量时,我一直收到错误.

这是类代码:

class Scenery():
    def __init__(self,name,description):
        self.name=name
        self.description=description

class Door(Scenery):
    def __init__(self,openstatus,lockstatus):
        self.openstatus=openstatus
        self.lockstatus=lockstatus
        super().__init__(name,description,openstatus,lockstatus)

class CageDoor(Door):
    def __init__(self):
        super().__init__(lockstatus=False,
                         openstatus=False,
                         name="Cage Door",
                         description="It's the door to the cage.")
Run Code Online (Sandbox Code Playgroud)

main.py代码:

from tiles import CageDoor

CageDoor = CageDoor()
Run Code Online (Sandbox Code Playgroud)

而错误:

  File "main.py", line 3, in <module>
    CageDoor = CageDoor()
  *File Location*
    name="Cage Door"
TypeError: __init__() got an unexpected keyword argument 'name'
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

我们GCM无法在我的国家

我有特殊问题,我放弃了思考,感到困惑.

我有一个使用GCM发出通知的应用程序,我正在使用"ONE SIGNAL"作为注释,因为它是推荐且简单的,我
成功并且可以给出注释.

问题是我住在伊朗,因为制裁,我需要VPN才能使用一个信号.当应用程序启动时,它想要登录"ONE SIGNAL"服务器(使用APP密钥和Api密钥) - 没有VPN,应用程序将挂断,但应用程序上的VPN将正常工作并将登录.

我想是为了解决这个问题,但是我可以在应用程序和登录中打开VPN程序,在关闭VPN之后,但它并不好.

现在我不知道该怎么办,GCM - ONE SIGNAL都无法使用....

请告诉我如何使用它们或至少如何发送通知?

notifications android google-cloud-messaging onesignal

6
推荐指数
1
解决办法
722
查看次数

React DatePicker Bootstrap 是最新的

datepickerReact使用bootstrap风格方面寻找了一个好处。但是我发现的所有东西都不能正常工作或不是最新的......

我正在React 15.0.2Boostrap 3.3.6

有谁知道一个好的datepicker组件?

datepicker twitter-bootstrap reactjs

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

与外部相比,在列表理解中创建集合时的时间差异很大

我有下面的测试用例,我在其中找到两个字符串中的元素,并按照第一个字符串的顺序返回它们.为什么是第二种情况,set(string2)列表理解中的内容在一个数量级上减慢了?

import timeit
timeit.timeit(
    """
    import random, string
    string1 = ''.join(random.choice(string.ascii_uppercase) for _ in range(100000))
    string2 = ''.join(random.choice(string.ascii_uppercase) for _ in range(100000))
    v=set(string2)
    [x for x in string1 if x in v]
    """,
    number=10,
)
# 2.005337953567505

timeit.timeit(
    """
    import random, string
    string1 = ''.join(random.choice(string.ascii_uppercase) for _ in range(100000))
    string2 = ''.join(random.choice(string.ascii_uppercase) for _ in range(100000))
    [x for x in string1 if x in set(string2)]
    """,
    number=10,
)
# 22.1062970161438
Run Code Online (Sandbox Code Playgroud)

python

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

无法释放异常子类

为什么我的自定义异常解除失败的简化版本。

我正在尝试腌制一个“简单”异常子类。它腌制还可以,但是当腌制时会掉下来:

import pickle

class ABError(Exception):
    def __init__(self, a, b):
        self.a = a
        self.b = b

ab_err = ABError("aaaa", "bbbb")

pickled = pickle.dumps(ab_err)
original = pickle.loads(pickled)  # Fails
Run Code Online (Sandbox Code Playgroud)

错误:

Traceback (most recent call last):
  File "p.py", line 12, in <module>
    original = pickle.loads(pickled)  # Fails
  File "/usr/lib/python2.7/pickle.py", line 1388, in loads
    return Unpickler(file).load()
  File "/usr/lib/python2.7/pickle.py", line 864, in load
    dispatch[key](self)
  File "/usr/lib/python2.7/pickle.py", line 1139, in load_reduce
    value = func(*args)
TypeError: __init__() takes exactly 3 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

较早的注释建议该问题是因为内置Exception …

python

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