我编写了自己的基于Python的作业调度程序,它使用多处理模块来生成新的作业.我正在尝试使用一种功能来杀死正在运行的进程os.kill,但它无法正常工作.我的(简化)代码如下所示:
from multiprocessing import Process
import os
...
p = Process(target=self.start_job, args=(run_dir,cmd,))
p.start()
...
def start_job(self,run_dir,cmd):
os.chdir(run_dir)
os.system(cmd)
print os.getpid()
...
Run Code Online (Sandbox Code Playgroud)
我想把这个输出的pid(例如3064)和另一个python会话运行:
import os, signal
os.kill(3064, signal.SIGTERM)
Run Code Online (Sandbox Code Playgroud)
os.kill如果我在父/产生进程的pid上运行它,它会起作用,但如果我在子/生成进程的pid上执行它,它就不起作用.除了SIGTERM,我还尝试了许多其他信号,如SIGKILL,SIGQUIT等.它们都没有工作.任何帮助将不胜感激.
我已经阅读了许多地方,CYK/CKY算法要求语法采用乔姆斯基范式(CNF),例如
标准版本的CYK仅在Chomsky normal form(CNF)~ Wikipedia中给出的无上下文语法中运行
但是,我也看到了一些CKY算法的例子,其中语法不在CNF中.克里斯托弗·曼宁使用的一个常见例子是"鱼人鱼缸"(参考:PPT幻灯片#19),其中包含一元规则:
S -> NP VP [0.9]
S -> VP [0.1]
VP -> V NP [0.4]
Vp -> V [0.6]
...
Run Code Online (Sandbox Code Playgroud)
我还看到了其他证明CKY在生产的RHS中使用三个非终端的例子(例如VP -> Verb NP NP 参考).为什么会出现差异?
几年前,我开始开发基于Bottle Web 框架的 Web 应用程序。我当时选择 Bottle 是因为它是最容易启动和快速运行的解决方案,而且我只是在为我的想法构建一个原型。现在,我有几千行代码,我正在寻求进入生产级解决方案。
起初我认为我应该转向一个完整的堆栈框架,例如django或web2py。当我朝着那个方向前进时,我开始只在需要时使用其他框架的各个部分。例如,我实现了 web2py 的数据访问层 (DAL),以便我可以在
谷歌应用引擎,现在我正在考虑使用 web2py 的调度程序来管理作业。然后,我开始使用cherrypy作为生产级的网络服务器。我尝试了火箭服务器,但我遇到了更多的错误,所以我更喜欢cherrypy而不是火箭。
我开始考虑重写我的代码以完全使用 web2py 的全栈解决方案;然而,重写我的路由函数以完全迁移到 web2py 的时间似乎很重要,我真的对火箭服务器不满意。
我真的很喜欢 Bottle 的简单性,Bottle 使用装饰器函数将路由映射到函数的方式,以及可扩展性的哲学。
我想知道与任何完整堆栈框架相比,使用 Bottle 进行路由在性能方面是否有任何特定优势。
我感谢任何人对此的建议!
python ×2
architecture ×1
bottle ×1
cyk ×1
grammar ×1
kill-process ×1
nlp ×1
performance ×1
web2py ×1