当前位置: 代码迷 >> 综合 >> python (协程/线程/进程) (二)多线程
  详细解决方案

python (协程/线程/进程) (二)多线程

热度:45   发布时间:2024-02-02 18:22:03.0

python的标准库提供两个模块:

  • thread是低级模块
  • threading是高级模块,对thread进行了封装

 

一、threading

#!coding:utf-8import threading
import time, random# 新线程执行的代码
def thread_run(urls):print('Current %s in running...' % threading.current_thread().name)for url in urls:print("%s -->>> %s" % (threading.current_thread().name, url))time.sleep(random.random())print('%s is running...' % threading.current_thread().name)t1 = threading.Thread(target=thread_run, name='Thread_1',args=(['url_1','url_2','url_3'],))
t2 = threading.Thread(target=thread_run, name='Thread_2',args=(['url_4','url_5','url_6'],))t1.start()
t2.start()
t1.join()
t2.join()
print('%s ended.' % threading.current_thread().name)

 

二、thread

#!coding:utf-8import threading
import time, random# 直接从threading.Thread继承并创建线程类,然后重写__init__方法和run方法
class myThread(threading.Thread):def __init__(self, name, urls):threading.Thread.__init__(self, name=name)self.name = nameself.urls = urlsdef run(self):print('Current %s in running...' % threading.current_thread().name)for url in self.urls:print("%s --->>> %s" % (threading.current_thread().name, url))time.sleep(random.random())print("%s ended." % threading.current_thread().name)t1 = myThread(name='Thread_3' ,urls=['url_1', 'url_2', 'url_3'])
t2 = myThread(name='Thread_4' ,urls=['url_4', 'url_5', 'url_6'])t1.start()
t2.start()
t1.join()
t2.join()
print('%s ended.' % threading.current_thread().name)

 

  相关解决方案