start
多线程,和多进程很像,都是无序的,为了提高效率,他们的区别如下
现在要生产100000个零件(任务有100000个 url),生产好的零件要运出到目的地(输出到指定文件 csv 等),默认我们是一个车间(进程),一个工人(线程),为了提高效率,现在我们多穿件几个车间(多创建几个进程),每个车间有多找2-3名工人(一个进程里面创建2-3个线程),去完成这次任务,人多了后,2个人在车间生产好的零件,另外一个就可以先把生产好的零件运送出去,不用等全部生产好了再送出,边产边运,其他车间也是一样的道理。
看了上面的故事,相信你应该理解了他们的区别,多进程主要用于计算密集型程序,多线程主要用于 I/O 密集型程序,起始还有一个多协程,关于更多可以自行网上了解
对于我们一般人而言,开个多进程就差不多了
多线程创建
"""
把一个函数传入并创建 Tread 实例
"""
import random
import time,threading
#新线程执行的代码
def thread_run(urls):
print('Current %s is running...' % threading.current_thread().name)
for url in urls:
print('%s --->>> %s' % (threading.current_thread().name,url))
time.sleep(random.random())
print('%s ended.' % threading.current_thread().name)
print('%s is runnung...' % 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)
threading.current_thread().name:获得线程 id
threading.Thread(target=任务函数名,name=线程名,args=([参数],)):创建线程