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个线程同时打印,打印完即止

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

阅读 1.9k
1 个回答
新手上路,请多包涵

多进程建议使用: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,)])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题