共 26 篇文章 |
|
导入Faker库后,我们可以创建一个Faker对象,然后使用该对象调用各种方法来生成虚假数据。from faker import Faker.# 创建Faker对象fake = Faker()random_number = fake.random_number(digits=4)print("随机数:", random_number)from faker import Fakerfake = Faker("zh-CN")for i in range(20): print('''... 阅10 转0 评0 公众公开 23-10-13 13:39 |
上图的下面是协程,协程主要是在单线程内实现的,以爬虫为例,协程先是让cpu爬取第一个url的内容,等待IO的时候,它又让CPU爬取第二个url的内容,当第二个任务等待IO的时候,它又让CPU爬取第三个url的内容,然后第三个任务等待IO, 它又循环回来,执行第一个任务,就这样返回循环。loop = asyncio.get_event_loop()# 定义超级循环tasks = [ loop... 阅5 转0 评0 公众公开 23-10-13 13:39 |
python并发编程:使用多进程multiprocessing模块加速程序的运行。if num % 2 == 0: return False sqrt_n = int(math.floor(math.sqrt(num)))# 单线程def single_thread(): for num in num_list: is_prime(num)#多线程def multi_thread(): with ThreadPoolExecutor() as pool: pool.map(is_prime,num_list)# 多进程def multi_process(): with Pro... 阅29 转0 评0 公众公开 23-10-13 13:39 |
python并发编程: Python使用线程池在Web服务中实现加速。@app.get("/")def index(): return { "result_file":read_file(), "read_db":read_db(), "read_api":read_api() }@app.get("/")def index(): result_file = pool.submit(read_file) result_db = pool.submit(read_db) result_api = p... 阅19 转0 评0 公众公开 23-10-13 13:39 |
python并发编程: Python好用的线程池ThreadPoolExecutor.ThreadPoolExecutor() as pool: htmls = pool.map(cnblogs_spider.craw,cnblogs_spider.urls) htmls = list(zip(cnblogs_spider.urls,htmls)) for url,html in htmls: print(url,len(html))#for future,url in futures.items(): # print(url,future.result()) for future in concurrent.... 阅43 转0 评0 公众公开 23-10-13 13:39 |
python并发编程: Python线程安全问题以及解决方案。def draw(account:Account,amount): with lock: if account.balance >= amount: time.sleep(1) logger.info("{}取钱成功".format(threading.current_thread().name)) account.balance -= amount logger.info("线程{},{}余额".format(threading.current_thread().name... 阅36 转0 评0 公众公开 23-10-13 13:39 |
# 生产者生产任务def do_craw(url_queue:queue.Queue,html_queue:queue.Queue):while True: url = url_queue.get() html = cnblogs_spider.craw(url) logger.info("生产者:{},爬取的连接是:{},url_queue.size={}".format( threading.current_thread().name, url, url_queue.qsize() )) html_queue.put(html) 阅14 转0 评0 公众公开 23-10-13 13:39 |
def single_thread(): logger.info("single_thread begin") for url in cnblogs_spider.urls: cnblogs_spider.craw(url) logger.info("single_thread end")if __name__ == "__main__": start = time.time() single_thread() end = time.time() logger.info("single thread cost: {}".format(end-start... 阅2 转0 评0 公众公开 23-10-13 13:39 |
python并发编程: Python速度慢的罪魁祸首,全局解释器锁GIL.当线程1在运行的时候,则会启动GIL当线程1需要进行IO操作时,GIL则会释放,此时线程1切换到线程2运行,GIL再次启用。当线程2运行IO时,GIL再次释放,此时线程2切换到线程3,GIL则再次启用。多线程适用于IO密集型问题,当线程在处理IO问题时,将释放GIL锁,并切换至下一线程,线程的切... 阅6 转0 评0 公众公开 23-10-13 13:39 |
多线程Thread多进程Process多协程Coroutine什么是CPU密集型计算、IO密集型计算?CPU密集型(CPU-bound):CPU密集型也叫计算密集型,是指I/O在很短的时间就可以完成,CPU需要大量的计算和处理,特点是CPU占用率相当高。IO密集型指的是系统运作大部分的状态是CPU在等待IO的读写操作,CPU占用率依然较低。如果是CPU密集型计算,使用多进程multiproces... 阅16 转0 评0 公众公开 23-10-13 13:39 |