python中多线程及多进程实现

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

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


回答:

多进程建议使用: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,)])

以上是 python中多线程及多进程实现 的全部内容, 来源链接: utcz.com/a/156365.html

回到顶部