1729 @ ウィキ

python_process


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

#! /usr/bin/env python

import os
import threading
import signal

def f(n): # 子プロセス用関数(遅い素数判定)
     p=2
    while p<n:
        if not [x for x in range(2,p) if p%x<1]:
            print p
        p += 1

def kill(pid): # プロセスidが pid のプロセスを終了させる関数
     os.kill(pid, signal.SIGKILL)
    print 'killed pid-%s'%pid

pid = os.fork() # ここから処理が2通りに分かれて、子プロセスにはpid==0が、親プロセスにはpid==(子プロセスのpid)が代入される
if pid == 0:
    f(3500)
else:
    threading.Timer(3.0, kill, (pid,)).start() # タイマー設定で、3.0秒後にkill(pid)が呼び出される。
     os.wait()                                  # 子プロセスの終了を待つ。
     os._exit(0)                                # もし、タイマーの時間より早く、子プロセスが終了すれば、何も無く終了

  • もっといい方法があるかもしれません -- (kt3k) 2007-11-27 07:23:50
  • signal.SIGKILLは単に、intの9らしいので、それを使えば、import signalは多分不要とおもいます -- (kt3k) 2007-11-27 10:21:36
名前:
コメント:

すべてのコメントを見る