1. ホーム
  2. python

[解決済み] パイソン 複数の関数を同時に実行する

2022-02-15 05:08:11

質問

Pythonで2つの関数を同時に実行しようとしています。私は以下のコードを試してみました。 multiprocessing が、コードを実行すると、1つ目の関数が終了した後に2つ目の関数が開始されます。

from multiprocessing import Process
def func1:
     #does something

def func2:
     #does something

if __name__=='__main__':
     p1 = Process(target = func1)
     p1.start()
     p2 = Process(target = func2)
     p2.start()

解決方法は?

正しく実行されていますね :)

この愚かなコードを実行してみてください。

from multiprocessing import Process
import sys

rocket = 0

def func1():
    global rocket
    print 'start func1'
    while rocket < sys.maxint:
        rocket += 1
    print 'end func1'

def func2():
    global rocket
    print 'start func2'
    while rocket < sys.maxint:
        rocket += 1
    print 'end func2'

if __name__=='__main__':
    p1 = Process(target = func1)
    p1.start()
    p2 = Process(target = func2)
    p2.start()

start func1' と表示され、次に 'start func2' と表示され、そして(とても)長い時間の後、ようやく関数が終了するのがわかると思います。しかし、これらは確かに同時に実行されます。

プロセスの起動に時間がかかるため、'start func2' が表示されることもあります。 前に 'start func1' です。