python中多线程及多进程实现

下面是一段多线程的示例代码

#!/usr/bin/python3  
  
import _thread  
import time  
  
# 为线程定义一个函数  
def print_time( threadName, delay):  
   count = 0  
   while count < 5:  
      time.sleep(delay)  
      count += 1  
      print ("%s: %s" % ( threadName, time.ctime(time.time()) ))  
  
# 创建两个线程  
try:  
   _thread.start_new_thread( print_time, ("Thread-1", 2, ) )  
   _thread.start_new_thread( print_time, ("Thread-2", 4, ) )  
except:  
   print ("Error: 无法启动线程")  
  

我想实现的是

a = [ "Thread-%s" % i for i in range(100)]

10个线程同时打印,打印完即止

同理多进程中应该怎么实现

阅读 214
评论
    1 个回答
    • 3
    • 新人请关照

    多进程建议使用:multiprocessing模块

    # -*- coding:utf-8 -*-
    import  os
    from multiprocessing import Pool
    
    class MultiProcess(object):
    
        def __init__(self, process_count):
            self.__process_count = process_count
    
        def multi_process(self, obj_name, fun_name, fun_args):
            fun = getattr(obj_name, fun_name)
            print('Parent process %s.' % os.getpid())
            pool = Pool(self.__process_count)
            print(obj_name, fun_name, fun_args)
            for fun_arg in fun_args:
                print(fun_arg)
                pool.apply_async(fun, args=fun_arg)
            print('Waiting for all subprocesses done...')
            pool.close()
            pool.join()
            print('All subprocesses done.')
    
    class A():
        def num_test(self, nums):
            print([num for num in range(nums)])
    
        def run(self):
            MultiProcess(2).multi_process(A, "num_test", [(self, 9,), (self, 5,)])
    
    if __name__ == "__main__":
        A().run()
        # MultiProcess(2).multi_process(A, "num_test", [(None, 9,), (None, 5,)])
      撰写回答

      登录后参与交流、获取后续更新提醒

      相似问题
      推荐文章