运行结果
Python多进程调用示例
import multiprocessing
import time
import os
import sys
def testcase0 ( ) : time. sleep( 1 ) return "case0_" + get_time( ) def testcase1 ( timestamp) : return "case1_" + timestampdef testcase2 ( timestamp) : return "case2_" + timestampdef testcase3 ( timestamp) : print ( timestamp) return
generate_func = testcase0
gather_func = testcase1
process_func = testcase2
show_func = testcase3
def proc_init ( _generate, _gather, _process, _show) : global generate_funcglobal gather_funcglobal process_funcglobal show_funcgenerate_func = _generategather_func = _gatherprocess_func = _processshow_func = _showreturn
def generate_info ( qdatain: multiprocessing. Queue) : while True : if generate_func == None : time. sleep( 1 ) continue qdatain. put( generate_func( ) ) print_time( ) return
def gather_info ( qdatain: multiprocessing. Queue, qdataout: multiprocessing. Queue) : while True : if gather_func == None : time. sleep( 1 ) continue qdataout. put( gather_func( qdatain. get( ) ) ) print_time( ) return
def process_info ( qdatain: multiprocessing. Queue, qdataout: multiprocessing. Queue) : while True : if process_func == None : time. sleep( 1 ) continue qdataout. put( process_func( qdatain. get( ) ) ) print_time( ) return
def show_info ( qdatain: multiprocessing. Queue) : while True : if show_func == None : time. sleep( 1 ) continue show_func( qdatain. get( ) ) print_time( ) return def get_time ( ) : timestamp = time. strftime( '%Y_%m_%d_%H_%M_%S' , time. localtime( time. time( ) ) ) return timestampdef print_time ( ) : print ( get_time( ) ) return
def main ( ) : print ( __file__) print_time( ) qdatain = multiprocessing. Queue( ) qdataout = multiprocessing. Queue( ) qdatashow = multiprocessing. Queue( ) proclist = [ ] proclist. append( multiprocessing. Process( target= generate_info, args= ( qdatain, ) ) ) proclist. append( multiprocessing. Process( target= gather_info, args= ( qdatain, qdataout, ) ) ) proclist. append( multiprocessing. Process( target= process_info, args= ( qdataout, qdatashow, ) ) ) proclist. append( multiprocessing. Process( target= show_info, args= ( qdatashow, ) ) ) for k in proclist: k. start( ) while True : print_time( ) time. sleep( 10 ) return
if __name__ == "__main__" : multiprocessing. freeze_support( ) proc_init( testcase0, testcase1, testcase2, testcase3) logical_cores = os. cpu_count( ) print ( "cpu num: " , logical_cores) main( ) sys. exit( 0 )