小伙伴 并发上传 图片有问题 所以看了下threading
def thread_work(name): print('a is run %s is %s' % (name, threading.current_thread())) print('start') for i in range(10): print(i) sleep(0.3) print('stop')print(threading.active_count()) # 查看有多少线程在执行 print(threading.enumerate()) # 查看那个线程在执行 print(threading.current_thread()) # 查看正在运行的线程 print('1') add_threading1 = threading.Thread(target=thread_work, name='ONE', args=('cy',)) # 新增加一个线程 线程名字是 ONE add_threading2 = threading.Thread(target=thread_work, name='TWO', args=('cy',)) # 新增加一个线程 线程名字是 TWO add_threading2.start() # 启动线程 add_threading1.start() # 启动线程 print(threading.active_count()) print(threading.enumerate()) add_threading1.join() # 等待线程1结束 执行主线程 add_threading2.join()# 等待线程2结束 执行 主线程 print('nb')
上面的可以初步了解
# -*- coding:utf-8 *- # auth : cy # update : import getpass import threading from configparser import ConfigParser from queue import Queue from time import time from Page.api.BuilderBaseFunc import get_ws_driver from Page.api.builder_api import upload_images, login from Page.image_conversion_md5 import get_md5, get_folder_file_path from run_path import setting_path def multi_threading_upload_images(threads_num=10): stat_time = time() file_path = r'C:\Users\%s\Desktop\test_photo' % (str(getpass.getuser())) config = ConfigParser() config.read(setting_path()) ws_url = config.get('testUrl', 'ws_test_url') username = config.get('labor', 'Wuhuigang') password = '123456' ws_driver = get_ws_driver(ws_url) sid = login(ws_driver, username, password) try: threads_num = int(threads_num) except Exception as e: print(e) print('please input int') all_images_path_list = get_folder_file_path(file_path) thread_run_num = len(all_images_path_list) // threads_num # 剩余个数 q = Queue() threads = [] for i in range(threads_num): print(threading.active_count(), 'start', i) # 查看有多少线程在执行 t = None if i == 0: md5_list = get_md5(all_images_path_list[0:thread_run_num]) image_path = all_images_path_list[0:thread_run_num] t = threading.Thread(target=upload_images, name=1, args=(sid['data']['sid'], md5_list, image_path, q)) print(threading.active_count(), '000') elif i == threads_num-1: image_path = all_images_path_list[i*(thread_run_num-1):] md5_list = get_md5(all_images_path_list[i*(thread_run_num-1):]) t = threading.Thread(target=upload_images, name=1, args=(sid['data']['sid'], md5_list, image_path, q)) print(threading.active_count(), 'end') elif 0 < i < threads_num-1: image_path = all_images_path_list[i*thread_run_num:(i+1)*thread_run_num] md5_list = get_md5(all_images_path_list[i*thread_run_num:(i+1)*thread_run_num]) t = threading.Thread(target=upload_images, name=1, args=(sid['data']['sid'], md5_list, image_path, q)) print(threading.active_count(), 'zhongjian') else: pass t.start() threads.append(t) for thread in threads: thread.join() results = [] for _ in range(threads_num): results.append(q.get()) print('end_time', time()-stat_time) if __name__ == '__main__': multi_threading_upload_images(16)
这个是 调到用多线程 上传图片 然后发现效果真的不咋样 同时运行的就一个线程 ,对于python 同时并发这个美丽的传说···只能·······唉