LoginSignup
2
4

More than 3 years have passed since last update.

Pythonで並列処理(旧)

Last updated at Posted at 2017-12-06

これは古いです

https://qiita.com/miyagaw61/private/11ef458371d1c31502fe
こっちを見てください

方法

from threading import Thread
from threading import Barrier

def function01(barrier, arg1, arg2):
    hoge()
    barrier.wait()
    fuga()

def function02(barrier, argA, argB):
    foo()
    barrier.wait()
    bar()

barrier = Barrier(<threads num>)
threads = []

t = Thread(target=function01, args=(barrier, arg1, arg2))
t.start()
threads.append(t)

t = Thread(target=function02, args=(barrier, argA, argB))
t.start()
threads.append(t)

for t in threads:
   t.join()

Example

from threading import Thread
from threading import Barrier
from time import sleep

def function01(barrier):
    print('START function01 !')
    barrier.wait()
    for i in range(5):
        sleep(0.5)
        print('A')
    print('FINISH function01 !')

def function02(barrier):
    print('START function02 !')
    barrier.wait()
    for i in range(5):
        sleep(0.5)
        print('B')
    print('FINISH function02 !')

def function03(barrier):
    print('START function03 !')
    barrier.wait()
    for i in range(5):
        sleep(0.5)
        print('C')
    print('FINISH function03 !')

barrier = Barrier(3)
threads = []

t = Thread(target=function01, args=(barrier,))
t.start()
threads.append(t)

t = Thread(target=function02, args=(barrier,))
t.start()
threads.append(t)

t = Thread(target=function03, args=(barrier,))
t.start()
threads.append(t)

for t in threads:
   t.join()

# >>> START function01 !
# >>> START function02 !
# >>> START function03 !
# >>> B
# >>> A
# >>> C
# >>> B
# >>> A
# >>> C
# >>> B
# >>> A
# >>> C
# >>> B
# >>> A
# >>> C
# >>> B
# >>> FINISH function02 !
# >>> A
# >>> FINISH function01 !
# >>> C
# >>> FINISH function03 !
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4