进程 ---线程 --协程的混合

举例:

from gevent import monkey; monkey.patch_all()
import gevent
import multiprocessing
import threading
from multiprocessing import current_process
import time


def gevent_handle():
    print ("\033[1;33;42m now,begin handle gevent %s task.......\033[0m"%threading.current_thread().getName())
    time.sleep(2)
    print("\033[1;31;42m now,end handle gevent %s task.......\033[0m"%threading.current_thread().getName())

def thread_handle():
    print("now,begin handle thread %s task........."%threading.current_thread().getName())
    g=gevent.spawn(gevent_handle)
    g.join()
    print("now,end handle thread %s task........."%threading.current_thread().getName())
def process_handle():
    print ("now,begin handle process %s task........."%current_process().name)
    t_list = []
    for i in range(5):
        t = threading.Thread(target=thread_handle,)
        t.start()
        t_list.append(t)
    for i in t_list:
        i.join()
    print("now,end handle process %s task........."%current_process().name)
if __name__ == '__main__':
    p_list = []
    for i in range(2):
        p = multiprocessing.Process(target=process_handle,)
        p.start()
        p_list.append(p)
    for i in p_list:
        i.join()
    print ("now,every process task handle complete.........")

结果:

now,begin handle process Process-1 task.........
   now,begin handle thread Thread-1 task.........
      now,begin handle gevent DummyThread-3 task.......
   now,begin handle thread Thread-2 task.........
      now,begin handle gevent DummyThread-5 task.......
   now,begin handle thread Thread-4 task.........
      now,begin handle gevent DummyThread-7 task.......
   now,begin handle thread Thread-6 task.........
      now,begin handle gevent DummyThread-9 task.......
   now,begin handle thread Thread-8 task.........
      now,begin handle gevent DummyThread-10 task.......
now,begin handle process Process-2 task.........
   now,begin handle thread Thread-1 task.........
      now,begin handle gevent DummyThread-3 task.......
   now,begin handle thread Thread-2 task.........
      now,begin handle gevent DummyThread-5 task.......
   now,begin handle thread Thread-4 task.........
      now,begin handle gevent DummyThread-7 task.......
   now,begin handle thread Thread-6 task.........
      now,begin handle gevent DummyThread-9 task.......
   now,begin handle thread Thread-8 task.........
      now,begin handle gevent DummyThread-10 task.......
      now,end handle gevent DummyThread-3 task.......
      now,end handle gevent DummyThread-5 task.......
      now,end handle gevent DummyThread-7 task.......
      now,end handle gevent DummyThread-9 task.......
      now,end handle gevent DummyThread-10 task.......
   now,end handle thread Thread-1 task.........
   now,end handle thread Thread-2 task.........
   now,end handle thread Thread-4 task.........
   now,end handle thread Thread-6 task.........
   now,end handle thread Thread-8 task.........
now,end handle process Process-1 task.........
      now,end handle gevent DummyThread-3 task.......
      now,end handle gevent DummyThread-5 task.......
      now,end handle gevent DummyThread-7 task.......
      now,end handle gevent DummyThread-9 task.......
      now,end handle gevent DummyThread-10 task.......
   now,end handle thread Thread-1 task.........
   now,end handle thread Thread-2 task.........
   now,end handle thread Thread-4 task.........
   now,end handle thread Thread-6 task.........
   now,end handle thread Thread-8 task.........
now,end handle process Process-2 task.........
now,every process task handle complete.........

猜你喜欢

转载自www.cnblogs.com/mmyy-blog/p/9465271.html