python中多线程及多进程实现

发布于 2022-09-12 04:08:27 字数 612 浏览 29 评论 0

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南城旧梦 2022-09-19 04:08:27

多进程建议使用: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,)])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文