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

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

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

一、threading

#!coding:utf-8


import 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-8

import 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 = name
        self.urls = urls


    def 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)

猜你喜欢

转载自blog.csdn.net/qq_19707521/article/details/107689544
今日推荐