2016-08-11 10 views
0

複数のプロセスを開始する2つのスクリプトがあります。今は2つの異なる端末を開き、両方のスクリプトを起動するためにpython start.pyを実行しています。 1つのコマンド、または1つのスクリプトを実行するコマンドではどうすれば実現できますか?複数処理... 2つの端末で2つのスクリプトを実行する

Start.py 1

# globals 
my_queue = multiprocessing.Manager().Queue() # queue to store our values 
stop_event = multiprocessing.Event() # flag which signals processes to stop 
my_pool = None 

def my_function(foo): 
    print("starting %s" % foo) 
    try: 
     addnews.varfoo) 
    except Exception,e: 
     print str(e) 

MAX_PROCESSES = 50 
my_pool = multiprocessing.Pool(MAX_PROCESSES) 

x = Var.objects.order_by('name').values('link') 
for t in x: 
    t = t.values()[0] 
    my_pool.apply_async(my_function, args=(t,)) 
my_pool.close() 
my_pool.join() 

Start1.py 2

# globals 
MAX_PROCESSES = 50 
my_queue = multiprocessing.Manager().Queue() # queue to store our values 
stop_event = multiprocessing.Event() # flag which signals processes to stop 
my_pool = None 

def my_function(var): 
    var.run_main(var) 
    stop_event.set() 


def var_scanner(): 
    # Since `t` could have unlimited size we'll put all `t` value in queue 
    while not stop_event.is_set(): # forever scan `values` for new items 
    y = Var.objects.order_by('foo).values('foo__foo') 
    for t in y: 
     t = t.values()[0] 
     my_queue.put(t) 

try: 
    var_scanner_process = multiprocessing.Process(target=var_scanner) 
    var_scanner_process.start() 
    my_pool = multiprocessing.Pool(MAX_PROCESSES) 

    #while not stop_event.is_set(): 
    try: # if queue isn't empty, get value from queue and create new process 
     var = my_queue.get_nowait() # getting value from queue 
     p = multiprocessing.Process(target=my_function, args=(var,)) 
     p.start() 
    except Queue.Empty: 
     print "No more items in queue" 
     time.sleep(1) 
     #stop_event.set() 

except KeyboardInterrupt as stop_test_exception: 
    print(" CTRL+C pressed. Stopping test....") 
    stop_event.set() 
+2

スクリプト2には閉じられていない引用符があります。 – Barmar

+0

両方のスクリプトの名前が同じであるのはなぜですか? – Barmar

+0

'xterm -e 'python start.py'を使ってスクリプトを実行する新しいウィンドウを開くことができます。それはあなたが探しているものですか? – Barmar

答えて

1

あなたは&シェル修飾子を使用して、同じ端末上でバックグラウンドで最初のスクリプトを実行することができます。

python start.py & 
python start1.py 
+0

素晴らしい、ありがとう。私はこれらの両方を別の親のマルチプロセッシングスクリプトから始めましたが、それは機能しませんでした。 – Dorian

関連する問題