Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python与调度计算_Python_Emacs_Scheduled Tasks_Interpreter - Fatal编程技术网

Python与调度计算

Python与调度计算,python,emacs,scheduled-tasks,interpreter,Python,Emacs,Scheduled Tasks,Interpreter,我希望在当前Python计算完成后安排一次计算。注意,我的Python解释器是通过emacs运行的 例如,我当前正在运行: >>> for i in range(2, 5): ... tn.TweetNetwork.create_subnetworks(i) ... 我犯了一个简单的错误,打算键入范围(1,5)。这已经运行了至少4个小时,应该再运行几个小时。也就是说,我不想用修正重新执行循环,并丢失所有已计算的内容 由于我不是全天候被计算机控制,我如何安排Pytho

我希望在当前Python计算完成后安排一次计算。注意,我的Python解释器是通过emacs运行的

例如,我当前正在运行:

>>> for i in range(2, 5):
...     tn.TweetNetwork.create_subnetworks(i)
... 
我犯了一个简单的错误,打算键入
范围(1,5)
。这已经运行了至少4个小时,应该再运行几个小时。也就是说,我不想用修正重新执行循环,并丢失所有已计算的内容

由于我不是全天候被计算机控制,我如何安排Python执行函数`tn.TweetNetwork.create_子网(1)

我使用Emacs24.3和Ubuntu12.04LTS,如果您需要更多信息,请告诉我。非常感谢您的帮助


编辑:我喜欢贴出的答案,但是我不知道如何找到PID。我正在通过emacs运行Python解释器。那么我该如何找到答案呢?

我认为,最简单的方法是编写另一个脚本,等待进程完成并运行
tn.TweetNetwork。创建子网络(1)
。只有当您的
create_子网络
不访问任何全局变量,并将所有结果写入数据库/文件/等时,此操作才有效

# Write script similar to these
import os, time

print "Wait until old script completed..."
while os.path.exists("/proc/SCRIPT_PID"):
    time.sleep(1)

print "Execute create_subnetworks..."
tn = ...
tn.TweetNetwork.create_subnetworks(1)

通过SSH连接到您的计算机,通过
ps axu | grep script_name
获取进程id并运行此新脚本。

我认为,最简单的方法是编写另一个脚本,等待进程完成并运行
tn.TweetNetwork。创建子网络(1)
。只有当您的
create_子网络
不访问任何全局变量,并将所有结果写入数据库/文件/等时,此操作才有效

# Write script similar to these
import os, time

print "Wait until old script completed..."
while os.path.exists("/proc/SCRIPT_PID"):
    time.sleep(1)

print "Execute create_subnetworks..."
tn = ...
tn.TweetNetwork.create_subnetworks(1)

通过SSH连接到您的计算机,通过
ps-axu | grep-script_-name
获取进程id并运行此新脚本。

这对评论来说太多了,但这不是一个完整的回复

要获取由Emacs启动的流程,请执行以下操作:

  • M-x列表进程
  • 确定要获取其id的进程
  • M-:
    (进程id(获取进程“进程名称”)
    但这将为您提供解释器的过程,而不是从解释器开始的任何其他过程

    如果需要通过该流程生成所有流程,可以执行以下操作:

    $ pstree PID
    

    其中
    PID
    是您之前从Emacs获得的信息。

    这对于评论来说太多了,但这不是一个完整的回复

    要获取由Emacs启动的流程,请执行以下操作:

  • M-x列表进程
  • 确定要获取其id的进程
  • M-:
    (进程id(获取进程“进程名称”)
    但这将为您提供解释器的过程,而不是从解释器开始的任何其他过程

    如果需要通过该流程生成所有流程,可以执行以下操作:

    $ pstree PID
    

    其中
    PID
    是您先前从Emacs获得的代码。

    如果Tyler comment没有帮助,您可以评估以下代码:

    (defun foo (ignored)
      (remove-hook 'comint-output-filter-functions 'foo)
      (run-with-timer 1 nil (lambda()
                              (goto-char (point-max))
                              (insert "tn.TweetNetwork.create_subnetworks(1)")
                              (comint-send-input))))
    
    (add-hook 'comint-output-filter-functions 'foo)
    
    它定义了一个函数,该函数将在调用该函数后的第二秒(延迟用于避免递归循环)插入需要插入到python低级缓冲区中的命令

    然后,它在低级进程(在您的例子中是python)写入任何内容的事件上设置该函数的调用。在您的例子中,这将是“>>>”提示符,python在准备就绪时编写该提示符。如果您的代码正在生成输出,那么这种方法将不起作用


    如果在其他缓冲区(shell、sql等)中使用comint,则需要将变量
    comint输出筛选函数
    设置为python交互式缓冲区的本地(使用
    将变量缓冲区设置为本地

    如果Tyler comment没有帮助,则可以评估以下代码:

    (defun foo (ignored)
      (remove-hook 'comint-output-filter-functions 'foo)
      (run-with-timer 1 nil (lambda()
                              (goto-char (point-max))
                              (insert "tn.TweetNetwork.create_subnetworks(1)")
                              (comint-send-input))))
    
    (add-hook 'comint-output-filter-functions 'foo)
    
    它定义了一个函数,该函数将在调用该函数后的第二秒(延迟用于避免递归循环)插入需要插入到python低级缓冲区中的命令

    然后,它在低级进程(在您的例子中是python)写入任何内容的事件上设置该函数的调用。在您的例子中,这将是“>>>”提示符,python在准备就绪时编写该提示符。如果您的代码正在生成输出,那么这种方法将不起作用


    如果您在其他缓冲区(shell、sql等)中使用comint,则需要将变量
    comint输出筛选函数
    设置为python交互式缓冲区的本地(使用
    将变量缓冲区设置为本地

    通过tramp
    C-x C-f/ssh访问您的服务器:user@server:/
    ,启动
    M-x eshell
    并执行
    ps-axo-pid,command | grep running_-script_-name
    。我不确定是否有
    running_-script_-name
    意味着我导入了一个模块,然后从解释器运行模块中的函数。通过tramp
    C-x C-f/ssh访问您的服务器:user@server:/
    ,启动
    M-x eshell
    并执行
    ps-axo-pid,command | grep running_-script_-name
    。我不确定我是否有一个
    running_-script_-name
    意味着我导入了一个模块,然后从解释器中运行模块中的函数。你真的需要安排下一个Python命令吗,或者在当前命令完成后立即运行它?在后一种情况下,只需在Python缓冲区中键入命令并按enter键。它将在完成当前命令后立即发送到Python。或者至少,这就是Emacs在shell或R终端缓冲区中的工作方式。如果您使用的是bash shell或基于comint模式的Python模式,它的工作方式应该是相同的。可能是一种完全不同的方法:如果您正在运行的任务给您的cpu带来了很大的负载,请找出这一点(如使用top命令),一旦加载时间足够长,就开始另一个任务:)您真的需要安排下一个Python命令,还是在当前命令完成后立即运行它?在后一种情况下,只需在Python缓冲区中键入命令并按enter键。它将在完成当前命令后立即发送到Python。或者至少,