python多进程不退出问题怎么解决

代码如下:
from multiprocessing import Manager, Pool

def num1():
global num
for i in range(1000):
num += 1
q.put(num, False)
q.put(None)

def num2():
global num
while True:
if not q.empty():
result = q.get()
if result is None:
break
else:
print(result)
print(1111111111111)

if name == '__main__':
num = 0
q = Manager().Queue()
p = Pool(5)
for i in range(1):
p.apply_async(num1)
for i in range(3):
p.apply_async(num2)
p.close()
p.join()
图片说明
while True循环退出了,但是进程没有退出。

1个回答

p.join() 这个本来就不是进程退出的方法,只是进程阻塞了的

weixin_43204689
奈何技术不达标 可是不写的话,数字都不打印了
4 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python3多进程爬虫的每个进程停止运行但是程序没有退出?
我写了一个多进程和多线程结合的爬虫(我不知道多进程和多线程怎样结合使用)所以我先说一下**我的思路**: * 首先我爬取的是[某车之家](https://www.autohome.com.cn/)的文章 * 汽车之家有很多种车,比如奥迪,宝马,奔驰,我创建一个进程池pool, 对应每一种车创建一个进程下载它的文章 * 然后,因为每种车下面有很多篇文章,我创建一个线程池,对应每一篇文章,创建一个线程来下载文章 * 创建进程池我使用的是multiprocessing.Pool * 创建线程池使用的是concurrent.futures.ThreadPoolExecutor ## 那么现在问题来了 * 当我刚开始运行我的代码的时候,因为我创建的进程池大小是cpu_count()=8,所以打开任务管理器可以看到8个python进程正在运行 ![图片说明](https://img-ask.csdn.net/upload/201901/26/1548506446_775132.png) * **然后,当代码运行一段时间后,进程池中的8个进程全部停止运行了** ![图片说明](https://img-ask.csdn.net/upload/201901/26/1548506504_930707.png) ![图片说明](https://img-ask.csdn.net/upload/201901/26/1548506544_201575.png) ## 可以看到此时代码并没有运行完毕,而且代码运行卡在这里无论等多久都不会继续运行 * 我观察发现,这些进程在下载某辆车如本田-雅阁的所有文章后,注意是将所有文章下载完毕才会停止运行,而且不再运行 ## 我想知道进程池中的进程为什么会停止运行,而我的函数没有停止?可以确定的是我的爬虫任务并没有全部完成,仅仅完成了一小部分。进程池中的每一个进程在爬取几辆车的所有文章后停止运行,求大佬解答,不甚感激。 ## 代码如下 ``` # coding=utf-8 import requests import os import re import json import time import random import threading import multiprocessing import concurrent.futures from bs4 import BeautifulSoup def change_title(title): rstr = r"[\/\\\:\*\?\"\<\>\|]" return re.sub(rstr, "", title) USER_AGENTS = [ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)", "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)", "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)", "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)", "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)", "Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0", "Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20", "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52", ] http_ip = list() https_ip = list() with open(r'D:\pycharm\Spider\99mm\useful_ip.txt', 'r') as fp: lines = fp.readlines() for line in lines: ips = eval(line) if str(ips['kind']) == 'HTTP': http_ip.append(ips['proxy']) else: https_ip.append(ips['proxy']) def get_all_cars(main_url, file_path): car_dict = {} html = requests.get(main_url) soup = BeautifulSoup(html.text, "html.parser") catalog = soup.find("div", id="hotcar-1").find_all("div", class_="name") for cata in catalog[-1:]: # suv, 紧凑型车, 中型车 cata_a = cata.find("a") print(cata_a["href"]) print(cata_a.get_text()) car_url = main_url + cata_a["href"] car_html = requests.get(car_url) car_soup = BeautifulSoup(car_html.text, "html.parser") # 有4个 class_="tab-content-item" car_letter_boxes = car_soup.find("div", class_="tab-content-item").find_all("div", class_="uibox") for car_letter_box in car_letter_boxes[:]: # 车牌按字母排序 A~Z, 一个字母下有很多车牌, 对每个字母进行处理 car_brand_info = car_letter_box.find("div", class_="uibox-con rank-list rank-list-pic") if car_brand_info: car_brands = car_brand_info.find_all("dl", olr=re.compile("^.*$")) for car_brand in car_brands: # 一个车牌有很多种车型, 对每个车牌进行处理 brand_name = car_brand.find("div").find("a").get_text() print("-car brand-", brand_name) car_dict[cata_a.get_text() + "-" + brand_name] = {} car_brand_path = main_path + "\\" + cata_a.get_text() + "-" + brand_name if not os.path.exists(car_brand_path): os.mkdir(car_brand_path) # os.chdir(car_brand_path) car_name_lists = car_brand.find_all("ul", class_="rank-list-ul") for car_name_list in car_name_lists: car_name_lis = car_name_list.find_all("li", id=re.compile("^.*$")) for car_name_li in car_name_lis: car_a_tag = car_name_li.find("h4").find("a") specific_car_url = "https:" + car_a_tag["href"] car_name = car_a_tag.get_text() print("\t", car_name, "\t", specific_car_url) car_dict[cata_a.get_text() + "-" + brand_name][car_name] = specific_car_url brand_cars_path = car_brand_path + "\\" + car_name if not os.path.exists(brand_cars_path): os.mkdir(brand_cars_path) # os.chdir(brand_cars_path) # 至此, 找到了每一辆车的url, 需要从这个url中找到它对应的一系列文章 # get_each_car_articles(main_url, specific_car_url) else: continue return car_dict def get_each_car_articles(main_url, specific_car_url, file_path, headers, proxies, info): # main_url, specific_car_url, file_path, headers, proxies, info = args # 传入的是每一种车的url, 即specific_car_url article_dict = {} specific_car_html = requests.get(url=specific_car_url, headers=headers, proxies=proxies) specific_car_soup = BeautifulSoup(specific_car_html.text, "html.parser") art_temp = specific_car_soup.find("div", class_="athm-sub-nav__channel athm-js-sticky") if art_temp: art = art_temp.find_all("li") else: print(f"\t\t****article is None, url is {specific_car_url}****") return part_url = art[6].find("a")["href"] specific_car_article_url = main_url + part_url right_pos = specific_car_article_url.rfind("/") specific_car_article_url = specific_car_article_url[:right_pos + 1] specific_car_article_html = requests.get(specific_car_article_url, headers=headers, proxies=proxies) specific_car_article_soup = BeautifulSoup(specific_car_article_html.text, "html.parser") page_info = specific_car_article_soup.find("div", class_="page") page_num = 1 if page_info: pages = page_info.find_all("a", target="_self") page_num = int(pages[-2].get_text()) for i in range(1, page_num + 1): if i == 1: page_url = specific_car_article_url else: page_url = specific_car_article_url[:-4] + str(i) + specific_car_article_url[-3:] # print("\t"*2, f"正在查找第{i}页的文章\t", page_url) page_html = requests.get(page_url, headers=headers, proxies=proxies) page_soup = BeautifulSoup(page_html.text, "html.parser") articles = page_soup.find("div", class_="cont-info").find_all("li") for article in articles: each_article = article.find("h3").find("a") each_article_url = "https:" + each_article["href"] each_article_title = each_article.get_text() article_dict[each_article_title] = each_article_url os.chdir(file_path) with concurrent.futures.ThreadPoolExecutor(max_workers=8) as t_executor: for key, value in article_dict.items(): t_executor.submit(download_each_article, *(value, key,info)) # thread_list = [] # for key, value in article_dict.items(): # thread_list.append(threading.Thread(target=download_each_article, args=(value, key,info))) # [thread.start() for thread in thread_list] # [thread.join() for thread in thread_list] def download_each_article(each_article_url, each_article_title, info): headers = { "User-Agent": random.choice(USER_AGENTS), "Referer": "https://www.autohome.com.cn" } proxies = {"proxy": random.choice(http_ip)} # each_article_url, each_article_title, headers, proxies, info = args print(f"\t\t--下载文章-- {info}\t{each_article_title}\t{each_article_url}") article_html = requests.get(each_article_url, headers=headers, proxies=proxies) article_soup = BeautifulSoup(article_html.text, "html.parser") article_content = article_soup.find("div", class_="container article") if article_content: with open(f"{change_title(each_article_title)}.txt", "w+", encoding="utf-8") as f: time_span = article_content.find("div", class_="article-info").find("span", class_="time") time = time_span.get_text() time_dict = {"time": time} f.write(json.dumps(time_dict) + "\n\n") article_content_div = article_content.find("div", id="articleContent") for content in article_content_div.find_all("p"): if content.get_text().strip(): content_dict = {"content": content.get_text()} f.write(json.dumps(content_dict) + "\n") else: try: imgs = content.find_all("a") for i in imgs: img = i.find("img") img_dict = {f"<[image] {img['alt']}> ": "https:" + img["src"]} f.write(json.dumps(img_dict) + "\n") except: continue pages = article_content.find("div", class_="athm-page__num") if pages: for a in pages.find_all("a", target="_self")[1:]: next_page_url = "https://www.autohome.com.cn" + a["href"] pages_html = requests.get(next_page_url, headers=headers, proxies=proxies) pages_soup = BeautifulSoup(pages_html.text, "html.parser") pages_content_div = pages_soup.find("div", class_="container article").find("div", id="articleContent") for content in pages_content_div.find_all("p"): if content.get_text().strip(): content_dict = {"content": content.get_text()} f.write(json.dumps(content_dict) + "\n") else: try: imgs = content.find_all("a") for i in imgs: img = i.find("img") img_dict = {f"<[image] {img['alt']}> ": "https:" + img["src"]} f.write(json.dumps(img_dict) + "\n") except: continue # 下载评论 f.write("\n") article_comment_span = article_content.find("div", "article-tools").find("span", class_="comment") article_comment_url = "https:" + article_comment_span.find("a")["href"] # print(article_comment_url) basic_reply_url = "https://reply.autohome.com.cn/api/comments/show.json?count=50&" \ "page={}&id={}&appid=1&datatype=jsonp&order=0&replyid=0" html = requests.get(article_comment_url, headers=headers, proxies=proxies) html_soup = BeautifulSoup(html.text, "html.parser") article_id = re.search(r"articleid=([\d]*)#", article_comment_url).groups()[0] first_json_dict = json.loads(requests.get(basic_reply_url.format(1, article_id), headers=headers, proxies=proxies).text[1:-1]) page_num = int(first_json_dict["commentcount"]) // 50 + 1 for i in range(1, page_num + 1): json_dict = json.loads(requests.get(basic_reply_url.format(i, article_id)).text[1:-1]) comment_dicts = json_dict["commentlist"] for comment in comment_dicts: comment_dict = {} comment_dict["RMemberId"] = comment["RMemberId"] comment_dict["RMemberName"] = comment["RMemberName"] comment_dict["replydate"] = comment["replydate"] comment_dict["ReplyId"] = comment["ReplyId"] comment_dict["RObjId"] = comment["RObjId"] comment_dict["RTargetReplyId"] = comment["RTargetReplyId"] comment_dict["RTargetMemberId"] = comment["RTargetMemberId"] comment_dict["RReplyDate"] = comment["RReplyDate"] comment_dict["RContent"] = comment["RContent"] comment_dict["RFloor"] = comment["RFloor"] f.write(json.dumps(comment_dict) + "\n") print(f"**{info}-{each_article_title} completed") else: print(f"\tPicture article, passed. URL is {each_article_url}") if __name__ == '__main__': main_url = r"https://www.autohome.com.cn" main_path = r"D:\pycharm\python_work\autohome\汽车之家" start_time = time.time() proxies = {'proxy': random.choice(http_ip)} headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", "Referer": "https://www.autohome.com.cn" } car_dict = get_all_cars(main_url, main_path) # print(car_dict) # with concurrent.futures.ProcessPoolExecutor(max_workers=8) as p_executor: # for keys, values in car_dict.items(): # for key, value in values.items(): # file_path = main_path + "\\" + str(keys) + "\\" + key # info = f"-{keys}-{key}-" # p_executor.submit(get_each_car_articles, *(main_url, value, file_path, headers, proxies, info)) pool = multiprocessing.Pool() for keys, values in car_dict.items(): print(keys, values) for key, value in values.items(): print("\t", key, value) file_path = main_path + "\\" + str(keys) + "\\" + key info = f"-{keys}-{key}-" pool.apply_async(get_each_car_articles, args=(main_url, value, file_path, headers, proxies, info)) pool.close() pool.join() end_time = time.time() print("##########已完成##########") print(f"spend time {end_time-start_time}") ```
Python多线程通信问题
新人第一次提问, 最近在学习Python多线程, notify()与wait()语句。这是我写的一个作业, 要求是: 现在的你,是一个农场主。农场中养着10头小牛,牛吃草长大,但只有当下雨的时候草才会长大,每天有20%的概率下雨,草经过3次成长后就可以喂给牛吃了。每头小牛吃过5次草之后就会长大了。要求使用多线程来完成。小牛(消费者)线程和草(生产者)之间需要通信。 以下是我的代码: ``` import threading import random from time import sleep """ 声明全局变量: num_cows: 牛的数量, 整形,十头。 cows: 牛的集合, 列表(数组)。 长度:10 num_grass: 草的数量, 整形,若干。 区间:50-101棵。 为了确保每头牛都可以长大,小草必须至少有50棵。 grass: 草的集合, 列表(数组)。 长度:num_grass initial_stat: 草/牛的初始状态,整形,设置为0。 increment: 用于改变状态的变量,整形,设置为0。 """ # 定义全局变量 num_cows, initial_stat, num_grass = 10, \ 0, \ random.randint(50, 101) cows, grass = [], [] for i in range(num_grass): # 设置草儿数量,初始化每一棵小草状态 grass.append(initial_stat) for i in range(num_cows): # 初始化每一头牛 cows.append(initial_stat) # TODO 草儿生长类 class GrassGrow(threading.Thread): """草成长线程""" # TODO 重写run函数 def run(self): global grass global cows while True: ct.acquire() print("一天过去了...小草会不会生长呢?") grass = rain(grass) # 淋雨的草儿成长一次,数位进一, 呼叫rain函数, 传入参数grass列表 if len(grass) > 0: # 判断还有没有需要生长的草儿 if grassgrow(grass): # 检查草儿,若有一株淋到三次雨,通知牛儿吃草 print("提醒牛儿该吃草了") ct.notify() # 提醒牛儿线程该吃草了 ct.release() print("草线程解锁") sleep(1) print("通知牛儿吃草了") elif len(grass) <= 0: # 如果草儿被吃完了,结束进程 print("草儿被吃光啦") ct.release() # 解锁 break # 退出程序 # TODO 牛儿生长类 class CowGrow(threading.Thread): """牛儿成长线程""" print("start") # TODO 重写run函数 def run(self): print("1") global cows global grass # TODO 随机一头牛吃草 while True: print("2") ct.acquire() print("3") ct.wait() print("4") if grassgrow(grass) and 5 not in cows: print("牛有草能吃了") # 长大的小草中,随机吃掉一株,从草儿列表中移除 index = [] for i in range(len(grass)): if grass[i] >= 3: index.append(i) delete = index[random.randint(0, len(index) - 1)] del grass[delete] cows[random.randint(range(len(cows)))] += 1 # 随机一头牛吃草,状态进1 print("有一头牛把吃了一颗草,现在的牛儿们是:{}".format(cows)) # 判断牛儿中是否有长大的牛儿 elif 5 in cows: # 移除所有已经长大的牛儿 for cow in range(len(cows)): if cows[cow] == 5: del cows[cow] # 判断是不是所有的牛儿都长大了,如果都长大了,结束进程 elif len(cows) == 0: print("所有的牛儿都长大啦") ct.release() break ct.wait() ct.release() # sleep(1) # TODO 下雨函数 def rain(grass_list): """ :param grass_list: 接收 草儿列表作为参数 :return: 返回 新的,淋雨之后的草儿列表 """ # 遍历草列表中的每一株草 rain_probability = random.randint(1, 101) # 每天有20%几率局部下雨。如果未下雨,则所有小草都不会成长。如果下雨了,局部小草会成长。 if rain_probability <= 20: for a_grass in range(len(grass_list)): grass_grow_prob = random.randint(1, 101) if grass_grow_prob <= 50 and 0 <= grass_list[a_grass] <= 2: grass_list[a_grass] += 1 print("今天下雨啦,现在的小草们:{}".format(grass)) print("今天没有下雨,没有小草生长...") return grass_list # TODO 判断草长大函数 def grassgrow(grass_list): """ :param grass_list: 接收 草儿列表作为参数 :return: 返回 若有生长好的小草则返回真,否则为假 """ if 3 not in grass_list: print("目前为止还没有小草生长完成") return False else: print("有小草生长完成了,现在的小草们:{}".format(grass)) return True if __name__ == "__main__": ct = threading.Condition() # 定义线程变量, 用于多线程通信 cow_thread = CowGrow() grass_thread = GrassGrow() cow_thread.start() print("牛等待吃草") grass_thread.start() ``` rain函数用来20%几率下雨, grasgrow函数用来判断有没有草淋了三次雨, 一旦有草淋到三次雨就可以了通知CowGrow线程吃草了。 我的解题思路是: 创建一个列表grass代表草, 一个列表cows代表牛。类GrassGrow中当判断grassgrow函数为真时, 唤醒牛线程。然后随机一头牛吃了一颗草之后,阻塞自己等待。而当我实际运行的时候,牛在一开始被阻塞之后一直没有被唤醒 以下是运行结果: ============================================= start 1 2 3牛等待吃草 一天过去了...小草会不会生长呢? 今天没有下雨,没有小草生长... 目前为止还没有小草生长完成 一天过去了...小草会不会生长呢? 今天下雨啦,现在的小草们:[1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1] 今天没有下雨,没有小草生长... 目前为止还没有小草生长完成 一天过去了...小草会不会生长呢? 今天没有下雨,没有小草生长... 目前为止还没有小草生长完成 一天过去了...小草会不会生长呢? 今天下雨啦,现在的小草们:[1, 1, 1, 0, 0, 2, 1, 1, 1, 2, 0, 0, 1, 1, 2, 1, 2, 2, 1, 0, 1, 1, 0, 1, 2, 1, 0, 2, 1, 1, 0, 1, 2, 1, 1, 0, 1, 0, 2, 1, 2, 2, 2, 0, 0, 2, 1, 2, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 2, 1, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 0, 1, 1, 2, 2, 2, 0, 2, 1, 2, 1, 2, 1, 0, 1, 0, 2, 1, 1, 1, 2, 1, 1, 1] 今天没有下雨,没有小草生长... 目前为止还没有小草生长完成 一天过去了...小草会不会生长呢? 今天下雨啦,现在的小草们:[2, 2, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 1, 1, 2, 2, 2, 3, 2, 1, 1, 1, 0, 1, 2, 2, 1, 2, 2, 2, 0, 1, 3, 1, 2, 0, 1, 0, 3, 2, 3, 3, 3, 0, 1, 2, 1, 2, 0, 1, 1, 2, 2, 1, 0, 1, 1, 1, 1, 3, 1, 1, 1, 3, 2, 2, 3, 1, 2, 2, 1, 3, 2, 1, 1, 2, 3, 2, 2, 1, 2, 1, 3, 1, 2, 2, 1, 1, 0, 3, 2, 2, 1, 3, 2, 2, 1] 今天没有下雨,没有小草生长... 有小草生长完成了,现在的小草们:[2, 2, 1, 1, 1, 2, 2, 1, 2, 2, 1, 0, 1, 1, 2, 2, 2, 3, 2, 1, 1, 1, 0, 1, 2, 2, 1, 2, 2, 2, 0, 1, 3, 1, 2, 0, 1, 0, 3, 2, 3, 3, 3, 0, 1, 2, 1, 2, 0, 1, 1, 2, 2, 1, 0, 1, 1, 1, 1, 3, 1, 1, 1, 3, 2, 2, 3, 1, 2, 2, 1, 3, 2, 1, 1, 2, 3, 2, 2, 1, 2, 1, 3, 1, 2, 2, 1, 1, 0, 3, 2, 2, 1, 3, 2, 2, 1] 提醒牛儿该吃草了 草线程解锁 通知牛儿吃草了 一天过去了...小草会不会生长呢? ============================================== 可以看到牛只有一开始调用了一次...之后再也没有被唤醒, 而且前几次小草没有sleep就运行了好多次,之后才开始运行sleep,打印"提醒牛儿该吃草了", "草线程解锁", "通知牛儿吃草了"才开始运行。谷歌和本站都查了一些问题,但和我的情况都不太相似。真心像各位请教...拜托了..
python对excel表格内容进行截图并保存的时候,经常性的出现类似告警,哪位帮忙看一下咋解决?
from win32com.client import Dispatch, DispatchEx import pythoncom,os from PIL import ImageGrab, Image import uuid #coding:utf-8 # screen_area——类似格式"A1:J10" ''' 函数参数名:filename:需要截图的文件名和路径 sheetname:需要截图的文件的sheet名称 save_image_name:截图后保存的图片名称,格式为save_image_name.png ''' def Excel_Catch_Screen(filename, sheetname ,save_image_name): """ 对excel的表格区域进行截图——用例:""" filename = os.path.abspath(filename) pythoncom.CoInitialize() # excel多线程相关 excel = DispatchEx("Excel.Application") # 启动excel #del excel #这个地方很重要,杀死excel进程是这个地方起作用 excel.Visible = False # 不显示Excel,而True可视化 excel.DisplayAlerts = True # 是否显示警告,关闭系统警告(保存时不会弹出窗口) workbook = excel.workbooks.Open(filename) # 打开excel sheet = workbook.worksheets[sheetname] # 选择sheet screen_area = sheet.UsedRange #有内容的区域 screen_area.CopyPicture() # 复制图片区域 sheet.Paste() # 粘贴 ''' name = str(uuid.uuid4()) # 重命名唯一值 image_name = name[:6] excel.Selection.ShapeRange.Name = image_name # 将刚刚选择的Shape重命名,避免与已有图片混淆 ''' #img_name='告警截图' img_name=save_image_name excel.Selection.ShapeRange.Name = img_name # 将刚刚选择的Shape重命名,避免与已有图片混淆 sheet.Shapes(img_name).Copy() # 选择图片 img = ImageGrab.grabclipboard() # 获取剪贴板的图片数据 print(img) # 可以弄个报错 img.save(img_name + '.png') # 保存图片 #workbook .Close(SaveChanges=0) # 关闭工作薄,不保存 workbook.Close(False) # 关闭Excel文件,不保存 excel.Quit() # 退出excel del excel #这个地方很重要,杀死excel进程是这个地方起作用 pythoncom.CoUninitialize() # 关闭多线程 os.remove(filename) if __name__ == '__main__': #pass filename = "excel_output.xls" sheetname = 'Sheet1' Excel_Catch_Screen(filename,sheetname,'告警截图') ![图片说明](https://img-ask.csdn.net/upload/202002/03/1580688762_892843.png) 我感觉应该是excel没关闭导致的,该咋弄?
成功安装完python后无法打开IDLE
从官网上下载了对应的python,并成功安装,命令提示行成功提示:![图片说明](https://img-ask.csdn.net/upload/201710/23/1508767685_163738.png)然后打开了IDLE,退出后,再次开的IDLE就一直没有任何反应,打不开了。常识关闭后台服务进程和重启机器后都不可以。请问是什么原因啊?
为什么这段代码运行后显示:进程已结束,退出代码0,却没有我设计的窗口出现,求解决??
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'jinhang.ui' # # Created by: PyQt5 UI code generator 5.13.0 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(30, 40, 71, 31)) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(30, 100, 91, 21)) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(30, 140, 61, 21)) self.label_3.setObjectName("label_3") self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(180, 140, 61, 16)) self.label_4.setObjectName("label_4") self.label_5 = QtWidgets.QLabel(self.centralwidget) self.label_5.setGeometry(QtCore.QRect(30, 180, 51, 21)) self.label_5.setObjectName("label_5") self.label_6 = QtWidgets.QLabel(self.centralwidget) self.label_6.setGeometry(QtCore.QRect(30, 210, 71, 31)) self.label_6.setObjectName("label_6") self.label_7 = QtWidgets.QLabel(self.centralwidget) self.label_7.setGeometry(QtCore.QRect(190, 210, 71, 31)) self.label_7.setObjectName("label_7") self.label_8 = QtWidgets.QLabel(self.centralwidget) self.label_8.setGeometry(QtCore.QRect(30, 250, 71, 21)) self.label_8.setObjectName("label_8") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(80, 490, 75, 23)) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(220, 490, 75, 23)) self.pushButton_2.setObjectName("pushButton_2") self.textEdit = QtWidgets.QTextEdit(self.centralwidget) self.textEdit.setGeometry(QtCore.QRect(100, 40, 71, 31)) self.textEdit.setObjectName("textEdit") self.textEdit_2 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_2.setGeometry(QtCore.QRect(180, 40, 71, 31)) self.textEdit_2.setObjectName("textEdit_2") self.textEdit_3 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_3.setGeometry(QtCore.QRect(260, 40, 71, 31)) self.textEdit_3.setObjectName("textEdit_3") self.textEdit_4 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_4.setGeometry(QtCore.QRect(90, 130, 71, 31)) self.textEdit_4.setObjectName("textEdit_4") self.textEdit_5 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_5.setGeometry(QtCore.QRect(240, 130, 71, 31)) self.textEdit_5.setObjectName("textEdit_5") self.textEdit_6 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_6.setGeometry(QtCore.QRect(100, 210, 71, 31)) self.textEdit_6.setObjectName("textEdit_6") self.textEdit_7 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_7.setGeometry(QtCore.QRect(260, 210, 71, 31)) self.textEdit_7.setObjectName("textEdit_7") self.plainTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget) self.plainTextEdit.setGeometry(QtCore.QRect(380, 0, 351, 551)) self.plainTextEdit.setObjectName("plainTextEdit") self.plainTextEdit_2 = QtWidgets.QPlainTextEdit(self.centralwidget) self.plainTextEdit_2.setGeometry(QtCore.QRect(30, 270, 341, 211)) self.plainTextEdit_2.setObjectName("plainTextEdit_2") self.verticalScrollBar = QtWidgets.QScrollBar(self.centralwidget) self.verticalScrollBar.setGeometry(QtCore.QRect(710, 0, 16, 551)) self.verticalScrollBar.setOrientation(QtCore.Qt.Vertical) self.verticalScrollBar.setObjectName("verticalScrollBar") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.label.setText(_translate("MainWindow", "aa号:")) self.label_2.setText(_translate("MainWindow", "时间段:")) self.label_3.setText(_translate("MainWindow", "开始时间:")) self.label_4.setText(_translate("MainWindow", "结束时间:")) self.label_5.setText(_translate("MainWindow", "bb段:")) self.label_6.setText(_translate("MainWindow", "开始点:")) self.label_7.setText(_translate("MainWindow", "结束点:")) self.label_8.setText(_translate("MainWindow", "分析结果:")) self.pushButton.setText(_translate("MainWindow", "清 除")) self.pushButton_2.setText(_translate("MainWindow", "开始分析")) if __name__ == "MainWindow": import sys app = QtWidgets.QApplication(sys.argv) widget = QtWidgets.QWidget() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
利用python对excel进行截图并保存的时候,经常性出现excel没有正常关闭,导致截图失败。
利用python对excel进行截图并保存的时候,经常性出现excel没有正常关闭,导致截图失败。源代码如下: # -*- coding:utf-8 -*- # Datetime:2019/12/30 11:45 # Author:sys from win32com.client import Dispatch, DispatchEx import pythoncom,os from PIL import ImageGrab, Image import uuid #coding:utf-8 # screen_area——类似格式"A1:J10" ''' 函数参数名:filename:需要截图的文件名和路径 sheetname:需要截图的文件的sheet名称 save_image_name:截图后保存的图片名称,格式为save_image_name.png ''' def Excel_Catch_Screen(filename, sheetname ,save_image_name): """ 对excel的表格区域进行截图——用例:""" filename = os.path.abspath(filename) pythoncom.CoInitialize() # excel多线程相关 excel = DispatchEx("Excel.Application") # 启动excel #del excel #这个地方很重要,杀死excel进程是这个地方起作用 excel.Visible = False # 不显示Excel,而True可视化 excel.DisplayAlerts = True # 是否显示警告,关闭系统警告(保存时不会弹出窗口) workbook = excel.workbooks.Open(filename) # 打开excel sheet = workbook.worksheets[sheetname] # 选择sheet screen_area = sheet.UsedRange #有内容的区域 screen_area.CopyPicture() # 复制图片区域 sheet.Paste() # 粘贴 #img_name='告警截图' img_name=save_image_name excel.Selection.ShapeRange.Name = img_name # 将刚刚选择的Shape重命名,避免与已有图片混淆 sheet.Shapes(img_name).Copy() # 选择图片 img = ImageGrab.grabclipboard() # 获取剪贴板的图片数据 print(img) # 可以弄个报错 img.save(img_name + '.png') # 保存图片 #workbook .Close(SaveChanges=0) # 关闭工作薄,不保存 workbook.Close(False) # 关闭Excel文件,不保存 excel.Quit() # 退出excel del excel #这个地方很重要,杀死excel进程是这个地方起作用 pythoncom.CoUninitialize() # 关闭多线程 os.remove(filename) if __name__ == '__main__': #pass filename = "excel_output.xls" sheetname = 'Sheet1' Excel_Catch_Screen(filename,sheetname,'告警截图') #删除文件 ``` ``` 出现的告警如下图所示: ![图片说明](https://img-ask.csdn.net/upload/202002/03/1580689151_98588.png) 这该怎么处理啊?
python提交commit()错误
![图片说明](https://img-ask.csdn.net/upload/201803/15/1521126207_767529.png) 报错 C:\Python33\python.exe C:/Users/test/sql2.py C:\Python33\lib\site-packages\pymysql\cursors.py:165: Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 480") result = self._query(query) Traceback (most recent call last): File "C:\Python33\lib\site-packages\sqlalchemy\engine\base.py", line 1193, in _execute_context context) File "C:\Python33\lib\site-packages\sqlalchemy\engine\default.py", line 507, in do_execute cursor.execute(statement, parameters) File "C:\Python33\lib\site-packages\pymysql\cursors.py", line 165, in execute result = self._query(query) File "C:\Python33\lib\site-packages\pymysql\cursors.py", line 321, in _query conn.query(q) File "C:\Python33\lib\site-packages\pymysql\connections.py", line 860, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "C:\Python33\lib\site-packages\pymysql\connections.py", line 1061, in _read_query_result result.read() File "C:\Python33\lib\site-packages\pymysql\connections.py", line 1349, in read first_packet = self.connection._read_packet() File "C:\Python33\lib\site-packages\pymysql\connections.py", line 1018, in _read_packet packet.check_error() File "C:\Python33\lib\site-packages\pymysql\connections.py", line 384, in check_error err.raise_mysql_exception(self._data) File "C:\Python33\lib\site-packages\pymysql\err.py", line 107, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.IntegrityError: (1062, "Duplicate entry '7' for key 'PRIMARY'") The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:/Users/test/sql2.py", line 25, in <module> session.commit() File "C:\Python33\lib\site-packages\sqlalchemy\orm\session.py", line 937, in commit self.transaction.commit() File "C:\Python33\lib\site-packages\sqlalchemy\orm\session.py", line 461, in commit self._prepare_impl() File "C:\Python33\lib\site-packages\sqlalchemy\orm\session.py", line 441, in _prepare_impl self.session.flush() File "C:\Python33\lib\site-packages\sqlalchemy\orm\session.py", line 2237, in flush self._flush(objects) File "C:\Python33\lib\site-packages\sqlalchemy\orm\session.py", line 2363, in _flush transaction.rollback(_capture_exception=True) File "C:\Python33\lib\site-packages\sqlalchemy\util\langhelpers.py", line 66, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File "C:\Python33\lib\site-packages\sqlalchemy\util\compat.py", line 187, in reraise raise value File "C:\Python33\lib\site-packages\sqlalchemy\orm\session.py", line 2327, in _flush flush_context.execute() File "C:\Python33\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 391, in execute rec.execute(self) File "C:\Python33\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 556, in execute uow File "C:\Python33\lib\site-packages\sqlalchemy\orm\persistence.py", line 181, in save_obj mapper, table, insert) File "C:\Python33\lib\site-packages\sqlalchemy\orm\persistence.py", line 830, in _emit_insert_statements execute(statement, multiparams) File "C:\Python33\lib\site-packages\sqlalchemy\engine\base.py", line 948, in execute return meth(self, multiparams, params) File "C:\Python33\lib\site-packages\sqlalchemy\sql\elements.py", line 269, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "C:\Python33\lib\site-packages\sqlalchemy\engine\base.py", line 1060, in _execute_clauseelement compiled_sql, distilled_params File "C:\Python33\lib\site-packages\sqlalchemy\engine\base.py", line 1200, in _execute_context context) File "C:\Python33\lib\site-packages\sqlalchemy\engine\base.py", line 1413, in _handle_dbapi_exception exc_info File "C:\Python33\lib\site-packages\sqlalchemy\util\compat.py", line 203, in raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=cause) File "C:\Python33\lib\site-packages\sqlalchemy\util\compat.py", line 186, in reraise raise value.with_traceback(tb) File "C:\Python33\lib\site-packages\sqlalchemy\engine\base.py", line 1193, in _execute_context context) File "C:\Python33\lib\site-packages\sqlalchemy\engine\default.py", line 507, in do_execute cursor.execute(statement, parameters) File "C:\Python33\lib\site-packages\pymysql\cursors.py", line 165, in execute result = self._query(query) File "C:\Python33\lib\site-packages\pymysql\cursors.py", line 321, in _query conn.query(q) File "C:\Python33\lib\site-packages\pymysql\connections.py", line 860, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) File "C:\Python33\lib\site-packages\pymysql\connections.py", line 1061, in _read_query_result result.read() File "C:\Python33\lib\site-packages\pymysql\connections.py", line 1349, in read first_packet = self.connection._read_packet() File "C:\Python33\lib\site-packages\pymysql\connections.py", line 1018, in _read_packet packet.check_error() File "C:\Python33\lib\site-packages\pymysql\connections.py", line 384, in check_error err.raise_mysql_exception(self._data) File "C:\Python33\lib\site-packages\pymysql\err.py", line 107, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.IntegrityError: (pymysql.err.IntegrityError) (1062, "Duplicate entry '7' for key 'PRIMARY'") [SQL: 'INSERT INTO user (id, name) VALUES (%(id)s, %(name)s)'] [parameters: {'id': '7', 'name': 'haha'}] (Background on this error at: http://sqlalche.me/e/gkpj) 进程已结束,退出代码1 虽然报错了,但数据库里还是插入了数据的
循环为什么没有退出?
新手python学徒,求教。以下为代码 ``` prompt = "\nTell me something, and I will repeat it back to you:" prompt += "\nEnter 'quit' to end the program. " active = True while active: message = input(prompt) if message != 'quit': print(message) else: active = False ``` 以下为结果 ``` Tell me something, and I will repeat it back to you: Enter 'quit' to end the program. quit quit Tell me something, and I will repeat it back to you: Enter 'quit' to end the program. quit 进程已结束,退出代码0 ``` 问题一: 为什么第一遍输入quit后循环并没有停止? 问题二: 不符合条件语句if if message != 'quit': 的情况执行了print(message)的原因是什么? 问题三: 为什么第二遍输入quit后循环停止了? 解释器为Pycharm
flask中HelloWorld都无法运行,这需要怎么解决?
**flask中HelloWorld都无法运行** ![图片说明](https://img-ask.csdn.net/upload/202002/21/1582294135_13903.png)![图片说明](https://img-ask.csdn.net/upload/202002/21/1582294142_794044.png)![图片说明](https://img-ask.csdn.net/upload/202002/21/1582294149_398549.png)![图片说明](https://img-ask.csdn.net/upload/202002/21/1582294158_166342.png)![图片说明](https://img-ask.csdn.net/upload/202002/22/1582341959_246573.png) ``` **源码** from flask import Flask app = Flask(__name__) @app.route('/') def hello_world()->str: return 'Hello World!' if __name__ == '__main__': app.run() ``` **报错信息** FLASK_APP = app.py FLASK_ENV = development FLASK_DEBUG = 0 In folder D:/pycharm项目/222 D:\pycharm项目\222\venv\Scripts\python.exe -m flask run * Serving Flask app "app.py" * Environment: development * Debug mode: off Traceback (most recent call last): File "C:\Users\78518\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 193, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\78518\AppData\Local\Programs\Python\Python38-32\lib\runpy.py", line 86, in _run_code exec(code, run_globals) File "D:\pycharm项目\222\venv\lib\site-packages\flask\__main__.py", line 15, in <module> main(as_module=True) File "D:\pycharm项目\222\venv\lib\site-packages\flask\cli.py", line 966, in main cli.main(prog_name="python -m flask" if as_module else None) File "D:\pycharm项目\222\venv\lib\site-packages\flask\cli.py", line 586, in main return super(FlaskGroup, self).main(*args, **kwargs) File "D:\pycharm项目\222\venv\lib\site-packages\click\core.py", line 717, in main rv = self.invoke(ctx) File "D:\pycharm项目\222\venv\lib\site-packages\click\core.py", line 1137, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "D:\pycharm项目\222\venv\lib\site-packages\click\core.py", line 956, in invoke return ctx.invoke(self.callback, **ctx.params) File "D:\pycharm项目\222\venv\lib\site-packages\click\core.py", line 555, in invoke return callback(*args, **kwargs) File "D:\pycharm项目\222\venv\lib\site-packages\click\decorators.py", line 64, in new_func return ctx.invoke(f, obj, *args, **kwargs) File "D:\pycharm项目\222\venv\lib\site-packages\click\core.py", line 555, in invoke return callback(*args, **kwargs) File "D:\pycharm项目\222\venv\lib\site-packages\flask\cli.py", line 852, in run_command run_simple( File "D:\pycharm项目\222\venv\lib\site-packages\werkzeug\serving.py", line 1052, in run_simple inner() File "D:\pycharm项目\222\venv\lib\site-packages\werkzeug\serving.py", line 996, in inner srv = make_server( File "D:\pycharm项目\222\venv\lib\site-packages\werkzeug\serving.py", line 847, in make_server return ThreadedWSGIServer( File "D:\pycharm项目\222\venv\lib\site-packages\werkzeug\serving.py", line 740, in __init__ HTTPServer.__init__(self, server_address, handler) File "C:\Users\78518\AppData\Local\Programs\Python\Python38-32\lib\socketserver.py", line 452, in __init__ self.server_bind() File "C:\Users\78518\AppData\Local\Programs\Python\Python38-32\lib\http\server.py", line 139, in server_bind self.server_name = socket.getfqdn(host) File "C:\Users\78518\AppData\Local\Programs\Python\Python38-32\lib\socket.py", line 756, in getfqdn hostname, aliases, ipaddrs = gethostbyaddr(name) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 0: invalid continuation byte 进程已结束,退出代码1 ``` **求大神解决,这究竟怎么回事,需要怎么解决** ```
为什么元组拆包会显示‘not enough arguments for format string’?
最近在学习Python,元组拆包时显示‘not enough arguments for format string’,代码如下: travler_ids = [('USA', '31195855'), ('BRA''CE342567'), ('ESP', 'XDA205856')] for passport in travler_ids: print('%s/%s' %passport) 控制台: C:\thanatos\py366\python.exe E:/python1/流畅的python/元组和记录.py USA/31195855 Traceback (most recent call last): File "E:/python1/流畅的python/元组和记录.py", line 5, in <module> print('%s/%s' %passport) TypeError: not enough arguments for format string 进程已结束,退出代码 1
【急】django + uwsgi 发送电子邮件问题
服务器系统: >CentOS release 6.8 (Final) python信息: >Python 3.7.2 uwsgi信息 >2.0.18 框架: >Django 2.1 问题:python的ssl是可以的,通过runserver是可以发送电子邮件的,但是当放入uwsgi环境里面不行,报错信息如下: ``` !!! uWSGI process 10068 got Segmentation Fault !!! *** backtrace of 10068 *** /usr/local/python3/bin/uwsgi(uwsgi_backtrace+0x29) [0x4c0309] /usr/local/python3/bin/uwsgi(uwsgi_segfault+0x21) [0x4c0491] /lib64/libc.so.6(+0x32510) [0x7ff68abd0510] /usr/lib64/libcrypto.so.1.0.0(X509_VERIFY_PARAM_set_hostflags+0x4) [0x7ff682c60d54] /home/python_envs/operation/lib/python3.7/lib-dynload/_ssl.cpython-37m-x86_64-linux-gnu.so(+0xef37) [0x7ff681238f37] /usr/local/python3/bin/uwsgi() [0x54e2a8] /usr/local/python3/bin/uwsgi(_PyMethodDef_RawFastCallKeywords+0x248) [0x50db38] /usr/local/python3/bin/uwsgi(_PyCFunction_FastCallKeywords+0x23) [0x50e9d3] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x4807) [0x591147] /usr/local/python3/bin/uwsgi(_PyEval_EvalCodeWithName+0x1ba) [0x595afa] /usr/local/python3/bin/uwsgi(_PyFunction_FastCallDict+0x144) [0x50e4b4] /usr/local/python3/bin/uwsgi(_PyObject_Call_Prepend+0x8b) [0x50f58b] /usr/local/python3/bin/uwsgi() [0x54d304] /usr/local/python3/bin/uwsgi() [0x54f0b3] /usr/local/python3/bin/uwsgi(_PyObject_FastCallKeywords+0x9e) [0x50ea8e] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x46e5) [0x591025] /usr/local/python3/bin/uwsgi(_PyEval_EvalCodeWithName+0x51f) [0x595e5f] /usr/local/python3/bin/uwsgi(_PyFunction_FastCallKeywords+0x100) [0x50e2a0] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x1404) [0x58dd44] /usr/local/python3/bin/uwsgi(_PyEval_EvalCodeWithName+0x1ba) [0x595afa] /usr/local/python3/bin/uwsgi(_PyFunction_FastCallDict+0x3ab) [0x50e71b] /usr/local/python3/bin/uwsgi(_PyObject_Call_Prepend+0x8b) [0x50f58b] /usr/local/python3/bin/uwsgi() [0x552721] /usr/local/python3/bin/uwsgi() [0x54f10b] /usr/local/python3/bin/uwsgi(PyObject_Call+0x52) [0x50fae2] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x1d30) [0x58e670] /usr/local/python3/bin/uwsgi() [0x50e0da] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x86c) [0x58d1ac] /usr/local/python3/bin/uwsgi() [0x50e0da] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x86c) [0x58d1ac] /usr/local/python3/bin/uwsgi(_PyEval_EvalCodeWithName+0x1ba) [0x595afa] /usr/local/python3/bin/uwsgi(_PyFunction_FastCallKeywords+0x100) [0x50e2a0] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x86c) [0x58d1ac] /usr/local/python3/bin/uwsgi(_PyEval_EvalCodeWithName+0x1ba) [0x595afa] /usr/local/python3/bin/uwsgi(_PyFunction_FastCallKeywords+0x100) [0x50e2a0] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x1404) [0x58dd44] /usr/local/python3/bin/uwsgi() [0x50e0da] /usr/local/python3/bin/uwsgi(_PyFunction_FastCallDict+0x3fb) [0x50e76b] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x1d30) [0x58e670] /usr/local/python3/bin/uwsgi() [0x50e0da] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x69e) [0x58cfde] /usr/local/python3/bin/uwsgi(_PyEval_EvalCodeWithName+0x1ba) [0x595afa] /usr/local/python3/bin/uwsgi(_PyFunction_FastCallKeywords+0x100) [0x50e2a0] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x459a) [0x590eda] /usr/local/python3/bin/uwsgi() [0x50e0da] /usr/local/python3/bin/uwsgi(_PyFunction_FastCallDict+0x75) [0x50e3e5] /usr/local/python3/bin/uwsgi(_PyObject_Call_Prepend+0x8b) [0x50f58b] /usr/local/python3/bin/uwsgi() [0x54c2c4] /usr/local/python3/bin/uwsgi(_PyObject_FastCallKeywords+0x9e) [0x50ea8e] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x46e5) [0x591025] /usr/local/python3/bin/uwsgi(_PyEval_EvalCodeWithName+0x1ba) [0x595afa] /usr/local/python3/bin/uwsgi(_PyFunction_FastCallKeywords+0x100) [0x50e2a0] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x459a) [0x590eda] /usr/local/python3/bin/uwsgi() [0x50e0da] /usr/local/python3/bin/uwsgi(_PyFunction_FastCallDict+0x75) [0x50e3e5] /usr/local/python3/bin/uwsgi(_PyObject_Call_Prepend+0x8b) [0x50f58b] /usr/local/python3/bin/uwsgi() [0x54c2c4] /usr/local/python3/bin/uwsgi(_PyObject_FastCallKeywords+0x9e) [0x50ea8e] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x46e5) [0x591025] /usr/local/python3/bin/uwsgi(_PyEval_EvalCodeWithName+0x1ba) [0x595afa] /usr/local/python3/bin/uwsgi(_PyFunction_FastCallKeywords+0x100) [0x50e2a0] /usr/local/python3/bin/uwsgi(_PyEval_EvalFrameDefault+0x459a) [0x590eda] /usr/local/python3/bin/uwsgi() [0x50e0da] /usr/local/python3/bin/uwsgi(_PyFunction_FastCallDict+0x75) [0x50e3e5] *** end of backtrace *** DAMN ! worker 6 (pid: 10068) died :( trying respawn ... Respawned uWSGI worker 6 (new pid: 12244) WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x1b927b0 pid: 12244 (default app) ``` uwsgi配置如下: ``` # uwsig使用配置文件启动 [uwsgi] # 项目目录 uid = root chdir = /home/wwwroot/operation/operation # 指定项目的application module= operation.wsgi:application virtualenv = /home/python_envs/operation/ #home = /home/python_envs/operation/ touch-reload= /home/wwwroot/operation/operation # 指定sock的文件路径 #socket=127.0.0.1:9092 socket=/run/uwsgi/operation.socket # 进程个数 processes = 4 workers=8 # 指定静态文件 #istatic-map=/static=/hostatic # 启用主进程 master=true # 自动移除unix Socket和pid文件当服务停止的时候 vacuum=true # 序列化接受的内容,如果可能的话 enable-threads = true enable-threads=true lazy=true vacuum = true thunder-lock=true # 启用线程 enable-threads=true #threads=20 # 设置自中断时间 harakiri-verbose = true harakiri=300 http-keepalive = 1 add-header = Connection: Keep-Alive disable-logging = true reload-mercy = 5 vacuum = true //退出、重启时清理文件 max-requests = 500 limit-as = 65535 buffer-size = 68718428160 # 设置缓冲 post-buffering=4096 # 设置日志目录 daemonize=/home/wwwlogs/operation.log disable-logging=/home/wwwlogs/operation_error.log # 保存uwsgi的状态 stats=/run/uwsgi/operation.status # 进程id,用于重启,停止uwsgi pidfile=/run/uwsgi/operation.pid env LANG="en_US.UTF-8" env LANGUAGE="en_US.UTF-8" ```
报错ImportError: cannot import name 'BaseEstimator'
有遇到这个问题的嘛 ![图片说明](https://img-ask.csdn.net/upload/201904/04/1554376729_569223.png) 貌似是sklearn库的问题,我卸了numpy scipy scikt-learn又重装也没得用 网上查不到这个报错”ImportError: cannot import name 'BaseEstimator'“ 代码: from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split def datasets_demo(): #获取并打印数据集 iris = load_iris() print("鸢尾花数据集:\n", iris) print("查看数据集描述:\n", iris["DESCR"]) print("查看特征值名字:\n", iris.feature_names) print("查看特征值名字:\n", iris.data, iris.data.shape) x_train,x_text,y_train,y_text=train_test_split(iris.data,iris.target,text_size=0.2,random_state=22) prinit("训练集特征值:\n",x_train,x_train.shape) 报错: D:\python\python.exe "F:/Administrator/python/begin/day1/machine learning.py" Traceback (most recent call last): File "F:/Administrator/python/begin/day1/machine learning.py", line 1, in <module> from sklearn.datasets import load_iris File "D:\python\lib\site-packages\sklearn\__init__.py", line 64, in <module> from .base import clone File "D:\python\lib\site-packages\sklearn\base.py", line 6, in <module> import copy File "F:\Administrator\python\begin\day1\copy.py", line 1, in <module> from sklearn.datasets import load_iris File "D:\python\lib\site-packages\sklearn\datasets\__init__.py", line 23, in <module> from .twenty_newsgroups import fetch_20newsgroups File "D:\python\lib\site-packages\sklearn\datasets\twenty_newsgroups.py", line 44, in <module> from ..feature_extraction.text import CountVectorizer File "D:\python\lib\site-packages\sklearn\feature_extraction\__init__.py", line 7, in <module> from .dict_vectorizer import DictVectorizer File "D:\python\lib\site-packages\sklearn\feature_extraction\dict_vectorizer.py", line 11, in <module> from ..base import BaseEstimator, TransformerMixin ImportError: cannot import name 'BaseEstimator' 进程已结束,退出代码1
pycharm使用multiprocessing多线程时无反应。
1.看视频学习爬虫时用到了多线程,然后自己敲代码运行无反应。复制视频源代码运行也无反应 附上源代码 ``` from fake_useragent import UserAgent import requests import re from multiprocessing import Pool ua = UserAgent() headers = { 'user-agent':ua.random } def get_proxy(): return requests.get("http://127.0.0.1:5010/get/").content def delete_proxy(proxy): requests.get("http://127.0.0.1:5010/delete/?proxy={}".format(proxy)) def getHtml(url): # .... retry_count = 5 proxy = get_proxy() while retry_count > 0: try: html = requests.get(url,headers=headers,proxies={"http": "http://{}".format(proxy)}) # 使用代理访问 html.raise_for_status() html.encoding = 'utf-8' return html.text except : retry_count -= 1 # 出错5次, 删除代理池中代理 delete_proxy(proxy) return None def parse_html(html): pattern = re.compile('<dd>.*?board-index.*?>(.*?)</i>.*?<img.*?data-src="(.*?)".*?<p.*?"name"><a.*?href="(.*?)">(.*?)</a>' +'.*?.*?<p class="star">(.*?)</p>.*?"releasetime">' +'(.*?)</p>.*?"integer">(.*?)</i>.*?"fraction">(\d)</i>.*?</dd>',re.S) items = re.findall(pattern,html) for item in items: yield { '排名' :item[0], '图片链接':"https://maoyan.com"+item[1], "电影链接":'https://maoyan.com'+item[2], "电影名称":item[3], "演员":item[4].strip()[3:], "上映时间":item[5], "评分": item[6]+item[6] } def main(offset): url = "https://maoyan.com/board/4?offset="+str(offset) html = getHtml(url) for item in parse_html(html): print(item) if __name__ == '__main__': pool = Pool() print(pool.map(main,[i*10 for i in range(10)])) ``` 使用的是multiprocessing 中的Pool模块 程序运行后,一直卡在这个界面。![图片说明](https://img-ask.csdn.net/upload/201904/16/1555409202_309159.png) 程序不报错不退出。使用其他方法的多线程例如 apply_async之类的也没有反应。 在任务管理器中能查看到创建的进程 ![图片说明](https://img-ask.csdn.net/upload/201904/16/1555409290_254460.png) 求大佬解答! 已经困惑很久了。
PyQt这样写为什么前几天还能跑,过几天就不行了???
PyQt这样写为什么前几天还能跑,过几天就不行了,,, ``` self.loginBtn = QPushButton("登录") self.loginBtn.setObjectName("loginBtn") self.loginBtn.clicked.connect(self.loginFunc) def loginFunc(self): if self.passwordBox.text() == "" or self.accountBox.text() == "": self.otherLabel.setText("""<font style="color:red">账号密码不能为空</font>""") return self.childWorker = worker(account = self.accountBox.text(),password = self.passwordBox.text(),x=self.x()+350,y=self.y()+150) self.childWorker.login.connect(self.callback) self.childWorker.start() class worker(QThread): login = pyqtSignal(str) # scanover = pyqtSignal(str) def __init__(self,parent=None,account=None,password=None,x=0,y=0): super(worker,self).__init__(parent) self.account = account self.password = password self.x = x self.y = y def __del__(self): self.wait() def run(self): self.login.emit("""<font style="color:#0f0">正在进行内部操作,请等待...</font>""") app.processEvents() ... self.eventloop = QEventLoop() self.qrlabel = QLabel() self.qrlabel.show() ..... self.childWorker2 = worker2(qrlabel = self.qrlabel) self.childWorker2.scan.connect(self.isLoginSuccess) self.childWorker2.start() self.childWorker2.quitevent.connect(self.loop) self.eventloop.exec_() class worker2(QThread): scan = pyqtSignal(str) quitevent = pyqtSignal(str) def __init__(self,parent=None,qrlabel=None): super(worker2,self).__init__(parent) self.qrlabel = qrlabel def __del__(self): self.wait() def run(self): app.processEvents() while True: .... self.quitevent.emit("loop可以退出了") ``` 求帮助,,, 在线等,,, 一级子进程中的QLabel,show不出来~~到那就会卡死
我想通过 'change' 按键 来改变不同显示 (多个客户端的发来的数据,至少两个客户端以上)
class MyServer(SocketServer.BaseRequestHandler): def setup(self): ip = self.client_address[0].strip() port = self.client_address[1] #print(ctime()+', '+ip+":"+str(port)+" is connect!")#打印连接的客户端ip  以及端口 def handle(self): connect = self.request max_row = Queue(256); min_row = Queue(256); count = 0 self.f = Figure() self.canvas = FigureCanvasTkAgg(self.f,master=root) self.canvas.get_tk_widget().grid(row=1,column=0,columnspan=4) self.adf = self.f.add_subplot(111) while connect: try: data = connect.recv(512) #data type is str bdata = [ord(x) for x in data] #bdata is list pdata = np.array(bdata) odata = pdata[::2]*256 + pdata[1::2] if bdata == None: break max_row.enqueue(max(odata)) min_row.enqueue(min(odata)) count = count + 1 if count == 4: self.adf.cla() self.adf.plot(max_row.queue,"g-") self.adf.plot(min_row.queue,"r-") self.adf.set_xlim(0,260) self.adf.set_ylim(0,4095) self.adf.set_title(self.client_address[0].strip()) self.canvas.show() count = 0 bdata = None except socket.error,arg: (errno,err_msg)=arg print "server failed:%s,errno=%d"%(err_msg,errno) if connect: connect.close() class ThreadedTcpServer(SocketServer.ThreadingMixIn,SocketServer.TCPServer):  pass class Watcher(): def __init__(self): self.child = os.fork() if self.child == 0: return else: self.watch() def watch(self): try: os.wait() except KeyboardInterrupt: self.kill() sys.exit() def kill(self): try: os.kill(self.child,signal.SIGKILL) except OSError: pass #新开一个进程监控输入,如果有ctrl+c的信号,则退出子线程 def main(): serverIP = MyServer.inputEntry.get() if serverIP == '': return server = ThreadedTcpServer((serverIP,port),MyServer) server_thread = threading.Thread(target=server.serve_forever) server_thread.deamon = True server_thread.start() def changeFun(): pass if __name__ == '__main__': matplotlib.use('TkAgg') Watcher() root = Tk() Label(root,text='server ip:').grid(row=0,column=0)#标签控件 MyServer.inputEntry = Entry(root) MyServer.inputEntry.insert(0,'192.168.1.99')#默认服务器ip MyServer.inputEntry.grid(row=0,column=1)#文本框控件 Button(root,text='start server',command= main).grid(row=0,column=2) Button(root,text='change',command=changeFun).grid(row=0,column=3) root.mainloop()#启动事件循环 #问题的问题是,多个客户端连接时,最后连接的 把之前的给 覆盖掉了,只显示最后的那个客户端发来的数据, #数据成波形动态显示了,子图的标题为 该客户端的IP
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
【资源】一个C/C++开发工程师的学习路线(已经无路可退,唯有逆风飞翔)【内附资源页】
声明: 1)该文章整理自网上的大牛和专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。大家都共享一点点,一起为祖国科研的推进...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
神级宝库!GitHub 标星 1.2w+,Chrome 最天秀的插件都在这里啦!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个沉迷 Chrome 不能自拔的蒟蒻… 作为一个在远古时代用过什么 IE、360、猎豹等浏览器的资深器哥,当我第一次了解 Chrome 的时候,就被它的美貌给吸引住了… 就在我用了一段时间之后,我坚决的卸载了电脑上其它碍眼的浏览器,并觉得在之前的搬砖生涯中,我不配当哥,我只配是个沙雕… ...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
张朝阳回应迟到 1 分钟罚 500:资本家就得剥削员工
loonggg读完需要2分钟速读仅需 1 分钟大家我,我是你们的校长。前几天,搜狐的董事局主席兼 CEO 张朝阳和搜狐都上热搜了。原因很简单,就是搜狐出了“考勤新规”。一封搜狐对员工发布...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
立即提问