python的一段代码,main函数里面的内容不运行,怎么回事?

如下面图片所示,python的一段代码,main函数里面的内容不运行,怎么回事?

3个回答

添加下面的

 if __name__="__main__":
     main()

图片在这里

楼上正解,你定义了但是没调用

 main()
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
求大神帮忙看看,为什么python运行了这段代码后没有反应

这段代码的主要作用是在ncbi网站上爬取一个网页上的所有论文然后下载到本地,试了下能运行但是运行了没有将论文下到本地,求帮忙看看,十分感谢 import requests from bs4 import BeautifulSoup def getHtmlText(url): try: r = requests.get(url) r.encoding = r.apparent_encoding return r.text except: return "" def getWebLink(webLink,pdfLink): url='https://www.ncbi.nlm.nih.gov/pubmed/?term=natronobacterium+gregroryi' html=getHtmlText(url) try: secondLink = [] soup = BeautifulSoup(html, 'html.parser') rslt = soup.find_all('div',attrs={'class':'rslt'}) for i in rslt: try: title=i.find('a') href=title.attrs['href'] webLink.append(href) except: continue for k in range(len(webLink)): webContent=getHtmlText(webLink[k]) if webContent=='': continue soup1=BeautifulSoup(webContent,'webContent.parser') icons_portlet=soup1.find('div',attrs={'class':'icons portlet'}) a=icons_portlet.find_all('a') for s in a: try: pdfhref=s.attrs['href'] secondLink.append(pdfhref) except: continue for d in range(len(secondLink)): secondContent=getHtmlText(secondLink[d]) soup2=BeautifulSoup(secondContent,'secondContent.parser') article_tools=soup2.find('div',attrs={'class':'article-tools'}) a1=article_tools.find_all('a') for g in a1: try: pdfhref=s.attrs['href'] pdfLink.append(pdfhref) except: continue except: print('false') def downloadPdf(pdfLink,url,filename): with open(filename,'wb') as f: r=requests.get(url) f.write(r.content) f.close() def main(): webLink=[] pdfLink=[] getWebLink(webLink,pdfLink) for u in range(len(pdfLink)): url=pdfLink[u] print(pdfLink[u]) filename="F:\\ncbi.pdf" downloadPdf(pdfLink,url,filename) main()

关于nodejs和python交互的一个问题

nodejs可以利用child_process的exec创建一个子进程来执行python的代码。 假设有如下代码: python代码 main.py ``` import sys import numpy as np params = np.load('params.npy').item() #高时间成本的io def function(input): return calculate_output(params, input) print(function(sys.argv[1])) ``` 那么在nodejs中,每次使用exec函数调用这段代码,都需要执行一次高时间成本的io, 而实际上这些io完全是重复的,那么有什么方法能避免这种重复的io呢?

Python运行时间测试,循环步长越长,时间越短?

写了一段小的Python测试代码,就想测试下函数执行时间。 按照原理应该是传进进去的数值越大,所需要的执行时间越长,不过好像测试出来的结果与这个相反,或者说Running time都没什么规律。下面是我的测试代码。 ``` #Test program for loop file import time import numpy as np import math def fib(n): a, b = 1, 1 for i in range(n - 1): b = a + b return a def main(): durations = [] for hbar in np.arange(10000000, 100000001, 1000000, dtype=np.int32): totaldur = 0 for loopi in range(500): ts = time.perf_counter() fib(hbar) duration = time.perf_counter() - ts totaldur += duration avgdur = totaldur/500 durations.append(avgdur*1000) with open("fibtime.txt",'a') as fibtime: for duri in range(len(durations)): fibtime.write(durations[duri].__str__()) fibtime.write("\n") if __name__ == "__main__": main() ``` 按照程序,应该输出的是循环500次的执行某一个数值,然后将它们执行的平均时间记录下来,最后再进行输出。 执行的测试结果为: 0.03618908093449499 0.008038216691254783 1.666207597038485 4.930384238617884 0.004369967799217278 0.004703721429002883 1.5210544181872097 4.20149063950314 0.004469561706981651 0.003966270356412949 1.524063522666916 3.236062269760394 0.0034515751232397918 0.0033443786271689646 1.6086529619873708 3.155688465695029 0.002819800029126185 0.002822080805643168 1.4022236810744602 0.003760240211356347 0.00343789046419829 0.11917893566041116 1.6752303489246039 0.0037283093401505596 0.002540785035662907 0.348679031262936 1.8380040468578045 0.0025924826366185982 0.002516456752854168 0.6250946997414957 1.7955025367936948 0.0020215282495179565 0.002346919032092387 0.5843189772389863 1.740299382327695 0.001991117896047001 0.0019850358251076727 0.7146889229907742 1.940911922873255 0.0022093121824369177 0.0021956275233492306 0.8987650735569304 2.112751707446364 0.0020542193795094477 0.0020549796383591 1.1203485938822624 2.3569635718177153 0.002023048767185287 0.048425446927829796 1.306459197098306 0.0024974502816945687 0.0021986685587975785 0.20808968621452095 1.5845983723618033 0.0023438779967150936 0.004086391252748456 0.47692709459863636 1.7565309085130636 0.0021979082998058175 0.0033223311209553685 0.5736723124756011 1.775610364304697 0.002070184815160303 0.0020572604149435847 1.0383181858095156 2.006096515619724 0.002257208489204743 0.0021705389817014975 0.8902881875163118 2.4096305028008516 0.0020922323215089023 0.0020625822267987814 1.1149994127000369 2.289857804988195 0.0022488456418940928 0.0022655713364585495 1.3835973395502421 0.002024569284834854 0.002004802555035212 0.15670759266699008 1.434994638274496 0.0025324221885441034 0.0022321199476564857 0.3116346591360468 1.4386218331892948 0.002135567075100653 0.0020063230726918846 0.4383135482305818 1.8716264939560858 0.002254927712300514 0.0030402750918199217

python调用一个函数里返回的变量不成功

我要写一个监控LOL击杀记录的功能,但是代码有问题,虽然可以监控到击杀记录,但是不能将监控的结果输出出来。 ``` import win32gui import win32api import win32con from win32gui import * import time from PIL import Image from PIL import ImageGrab import imagehash import pymouse,pykeyboard,os,sys from pymouse import * from pykeyboard import PyKeyboard import schedule import cv2 import numpy as np import matplotlib.pyplot as plt from threading import Thread,Lock m = PyMouse() k = PyKeyboard() titles = set() lock=Lock() i=0 reward = 0 #获取电脑上的窗口句柄 def foo(hwnd,mouse): if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd): titles.add(GetWindowText(hwnd)) def playGame(): """Click the game icon in the simulator to enter and displays to the specified location""" EnumWindows(foo, 0) list = [] for title in titles: if title: list.append(title) for title in list: a = 'League of Legends (TM) Client' if title.find(a) != -1: hwnd = win32gui.FindWindow(0,a) win32gui.SetWindowPos(hwnd, win32con.HWND_TOP,0,0,1282,790,win32con.SWP_SHOWWINDOW) hwnd = win32gui.FindWindow(0,a) size = win32gui.GetWindowRect(hwnd) #print(size) # 在模拟器点击游戏图标进入游戏 #win32api.SetCursorPos([size[0] + 410, size[1] + 186]) #win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) #win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0) #time.sleep(10) return size def jianc(): """Click to implement in the game""" # 点击我知道 reward = 0 size = playGame() #time.sleep(15) #print(size) topx, topy = size[0], size[1] #print(topx) #print(topy) ImageGrab.grab((topx + 496, topy + 125, topx + 787, topy + 155)).save(r'C:\Users\Administrator\Desktop\game\model/cheshi'+str(i)+'.jpg','JPEG') pic = np.array(Image.open(r'C:\Users\Administrator\Desktop\game\model/cheshi'+str(i)+'.jpg')) N = 125 for a in range(pic.shape[0]): for j in range(pic.shape[1]): if (pic[a][j][0] > N)&(pic[a][j][1] > N)&(pic[a][j][2] > N): pic.itemset((a,j,0),255) pic.itemset((a,j,1),255) pic.itemset((a,j,2),255) else: pic.itemset((a,j,0),0) pic.itemset((a,j,1),0) pic.itemset((a,j,2),0) #plt.imshow(pic) plt.axis('off') cv2.imencode('.jpg', pic)[1].tofile(r'C:\Users\Administrator\Desktop\game\model\检测/cheshi'+str(i)+'.jpg') #cv2.imwrite(r'C:\Users\Administrator\Desktop\game\model/检测/cheshi'+str(i)+'.jpg',pic) #plt.savefig("result.jpg") #plt.show() #im.save(r'C:\Users\Administrator\Desktop\123/'+str(c)+'.jpg','JPEG') #设置保存路径和图片格式 hash_size = 6 hash1 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\model/检测/cheshi'+str(i)+'.jpg'), hash_size=hash_size) hash2 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\击杀了一名.png'), hash_size=hash_size) hash3 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\你已经被击杀.png'), hash_size=hash_size) hash4 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\摧毁防御塔.png'), hash_size=hash_size) hash5 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\双杀.png'), hash_size=hash_size) hash6 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\三杀.png'), hash_size=hash_size) a = (1 - (hash1 - hash2) / len(hash1.hash) ** 2) a1 = (1 - (hash1 - hash3) / len(hash1.hash) ** 2) a2 = (1 - (hash1 - hash4) / len(hash1.hash) ** 2) a3 = (1 - (hash1 - hash5) / len(hash1.hash) ** 2) a4 = (1 - (hash1 - hash6) / len(hash1.hash) ** 2) #print("你被击杀了",a1) if a > 0.76 and a<0.83: reward=1 print("你击杀了",reward,"人!!!") #win32api.SetCursorPos([topx + 290, topy + 310]) #win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) #win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0) elif a1>0.84: reward=-1 print("你被击杀了",reward,"人!!!") return reward elif a2>0.9: reward=1 print("你摧毁了防御塔",reward,"人!!!") elif a3>1: reward=2 print("你双杀了","人!!!") elif a4>1: reward=3 print("你三杀了","人!!!") return reward # # def main(reward): n=0 print(reward) schedule.every(4).seconds.do(jianc)#执行定时截屏 while True: #循环 schedule.run_pending() n = n+1 time.sleep(4) reward=jianc() return reward if __name__ == '__main__': #print(reward) lock.acquire() l=0 while True: #循环 l = l+1 time.sleep(4) main(reward) print('得分',reward) lock.release() ``` 这就是代码,识别准确率比较低,但是最重要的是最后得到的结果不能输出, 我想要的是,识别一张图片输出一个reward,然后在识别下一个图片。 应该怎么改呀,大佬们。 if a > 0.76 and a<0.83: reward=1 print("你击杀了",reward,"人!!!") #win32api.SetCursorPos([topx + 290, topy + 310]) #win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) #win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0) elif a1>0.84: reward=-1 print("你被击杀了",reward,"人!!!") return reward elif a2>0.9: reward=1 print("你摧毁了防御塔",reward,"人!!!") elif a3>1: reward=2 print("你双杀了","人!!!") elif a4>1: reward=3 print("你三杀了","人!!!") return reward 这一段代码怎么改才能把reward返回出来,求大佬出来指点一下 把循环拿到外面就好了 ``` import win32gui import win32api import win32con from win32gui import * import time from PIL import Image from PIL import ImageGrab import imagehash import pymouse,pykeyboard,os,sys from pymouse import * from pykeyboard import PyKeyboard import schedule import cv2 import numpy as np import matplotlib.pyplot as plt from threading import Thread,Lock m = PyMouse() k = PyKeyboard() titles = set() lock=Lock() i=0 #reward = 0 #获取电脑上的窗口句柄 def foo(hwnd,mouse): if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd): titles.add(GetWindowText(hwnd)) def playGame(): """Click the game icon in the simulator to enter and displays to the specified location""" EnumWindows(foo, 0) list = [] for title in titles: if title: list.append(title) for title in list: a = 'League of Legends (TM) Client' if title.find(a) != -1: hwnd = win32gui.FindWindow(0,a) win32gui.SetWindowPos(hwnd, win32con.HWND_TOP,0,0,1282,790,win32con.SWP_SHOWWINDOW) hwnd = win32gui.FindWindow(0,a) size = win32gui.GetWindowRect(hwnd) #print(size) # 在模拟器点击游戏图标进入游戏 #win32api.SetCursorPos([size[0] + 410, size[1] + 186]) #win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) #win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0) #time.sleep(10) return size def jianc(): """Click to implement in the game""" # 点击我知道 #reward = 0 size = playGame() #time.sleep(15) #print(size) topx, topy = size[0], size[1] #print(topx) #print(topy) ImageGrab.grab((topx + 496, topy + 125, topx + 787, topy + 155)).save(r'C:\Users\Administrator\Desktop\game\model/cheshi'+str(i)+'.jpg','JPEG') pic = np.array(Image.open(r'C:\Users\Administrator\Desktop\game\model/cheshi'+str(i)+'.jpg')) N = 125 for a in range(pic.shape[0]): for j in range(pic.shape[1]): if (pic[a][j][0] > N)&(pic[a][j][1] > N)&(pic[a][j][2] > N): pic.itemset((a,j,0),255) pic.itemset((a,j,1),255) pic.itemset((a,j,2),255) else: pic.itemset((a,j,0),0) pic.itemset((a,j,1),0) pic.itemset((a,j,2),0) #plt.imshow(pic) plt.axis('off') cv2.imencode('.jpg', pic)[1].tofile(r'C:\Users\Administrator\Desktop\game\model\检测/cheshi'+str(i)+'.jpg') #cv2.imwrite(r'C:\Users\Administrator\Desktop\game\model/检测/cheshi'+str(i)+'.jpg',pic) #plt.savefig("result.jpg") #plt.show() #im.save(r'C:\Users\Administrator\Desktop\123/'+str(c)+'.jpg','JPEG') #设置保存路径和图片格式 hash_size = 6 hash1 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\model/检测/cheshi'+str(i)+'.jpg'), hash_size=hash_size) hash2 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\击杀了一名.png'), hash_size=hash_size) hash3 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\你已经被击杀.png'), hash_size=hash_size) hash4 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\摧毁防御塔.png'), hash_size=hash_size) hash5 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\双杀.png'), hash_size=hash_size) hash6 = imagehash.average_hash(Image.open(r'C:\Users\Administrator\Desktop\game\截图\三杀.png'), hash_size=hash_size) return hash1,hash2,hash3,hash4,hash5,hash6 # # def main(hash1,hash2,hash3,hash4,hash5,hash6): a = (1 - (hash1 - hash2) / len(hash1.hash) ** 2) a1 = (1 - (hash1 - hash3) / len(hash1.hash) ** 2) a2 = (1 - (hash1 - hash4) / len(hash1.hash) ** 2) a3 = (1 - (hash1 - hash5) / len(hash1.hash) ** 2) a4 = (1 - (hash1 - hash6) / len(hash1.hash) ** 2) #print("你被击杀了",a1) return a,a1,a2,a3,a4 def defen(): #print(reward) schedule.every(4).seconds.do(jianc)#执行定时截屏 #lock.acquire() reward=0 hash1,hash2,hash3,hash4,hash5,hash6=jianc() a,a1,a2,a3,a4=main(hash1,hash2,hash3,hash4,hash5,hash6) #time.sleep(4) #reward=jianc() #循环 if a > 0.76 and a<0.83: reward=1 #print("你击杀了",reward,"人!!!") #win32api.SetCursorPos([topx + 290, topy + 310]) #win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) #win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0) elif a1>0.84: reward=-1 #print("你被击杀了",reward,"人!!!") #return reward elif a2>0.9: reward=1 #print("你摧毁了防御塔",reward,"人!!!") elif a3>1: reward=2 #print("你双杀了","人!!!") elif a4>1: reward=3 #print("你三杀了","人!!!") else : #print(reward) reward=0 #print('得分',a,a1,a2,a3,a4,reward) #time.sleep(4) #lock.release() return reward if __name__ == '__main__': l=0 while True: #循环 schedule.run_pending() l = l+1 #defen() reward=defen() #print(reward) time.sleep(4) ```

Python代码哪里错了??怎么可以运行??

#!/usr/bin/env python #_*_ coding: utf-8 _*_ # pygame游戏库 sys操控python运行时的环境 import pygame,sys,random #这个模块包含各种pygame所使用的常量 from pygame.locals import * #1.定义颜色变亮 #0-255 0黑色 255白色 redColor = pygame.Color(255,0,0) #背景为黑色 blackColor = pygame.Color(0,0,0) #贪吃蛇为白色 whiteColor = pygame.Color(255,255,255) #2.定义游戏结束的函数 def gameOver(): pygame.quit() sys.exit() #3.定义main函数-->定义我们的入口函数 用户 def mian(): #3.1初始化pygame pygame.init() #3.2定义一个变量来控制速度 fpsClock = pygame.time.Clock() #3.3>创建pygame显示层,说白了创建一个界面 playSurface = pygame.display.set_mode((640,480)) pygame.display.set_caption('贪吃蛇') #3.4>初始化变量 #初始化贪吃蛇的起始坐标位置 我们以(100,100)为基准 snakePosition = [100,100] #初始化贪吃蛇的长度列表中有几个元素就代表有几段身体 snakeBody =[[100,100],[100,100][60,100]] #初始化目标方块的位置 targetPosition = [300,300] #目标方块的标记 目的:判断是否吃掉了这个目标方块,1就是没有吃掉, 0 吃掉 targetflag = 1 #初始化方向 --> 往右 direction = 'right' #定义一个方向变量(人为控制 案件有关系) changeDirection = direction #以上为准备工作 #3.5>pygame中 while Ture: for event in pygame.event.get(): #从队列中获取事件 if event.type == QUIT: pygame.quit() sys.exit() elif event.type == KEYDOWN: if event.key == K_RIGHT: changeDirection = 'right' if event.key == K_LIFT: changeDirection = 'left' if event.key == K_UP: changeDirection = 'up' if event.key == K_DOWN: changeDirection = 'down' # 对应该键盘上的Esc if event.key == K_ESCAPE: pygame.event.post(pygame.event.Event(QUIT)) #3.6>确定方向 if changeDirection == 'left' and not direction == 'right': direction = changeDirection if changeDirection == 'right' and not direction == 'left': direction = changeDirection if changeDirection == 'up' and not direction == 'down': direction = cahngeDirection if changeDirection == 'down' and not direction == 'up': direction = changeDirection #3.7>根据方向移动蛇头 if direction == 'right': snakePosition[0] += 20 if direction == 'left': snakePosition[0] += 20 if direction == 'up' : snakePosition[0] +=20 if direction == 'down': snakePosiotion[0] += 20 #3.8增加蛇的长度 snakeBody.insert(0,list(snakePosition)) #如果贪吃蛇的位置和目标方块的位置重合 意味着蛇吃掉它了 目标方块为0 if snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]: targetflag = 0 else: snakBody.pop() if targetflag == 0: x= random.randrange(1,32) y = random.randrange(1,24) targetPosition = [int(x*20),int(y*20)] targetflag = 1 #3.9填充背景颜色 playSurface.fill(blackColor) for position in snakeBody: #画蛇 pygame.draw.rect(playSurface,whiteColor,Rect(position[0],position[1],20,20)) #画目标方块 pygame.draw.rect(playSurface,redColor,redColor, Rect(targetPosition[0],targetPosition[1],20,20)) #第一个参数surface:指定一个surface,在这个区域内控制,界面 #第二个参数color:颜色 #第三个参数 Rect:返回一个矩形((x,y), (width,height)) #第四个参数 width:标示线条的粗细 width=0填充 实心儿 width= 1空心儿 #4.更新显示到屏幕表面 pygame.display.flip() #判断是否游戏结束 if snakePosition[0] > 620 or snakePosition[0] < 0: gameOver() elif snakePosition[1] > 460 or sankePosition[1] < 0: gameOver() #控制游戏速度 fpsClock.tick(5) #5.启动这个入口函数 if __name__ == "__main__": main()

【python】亲们,看下这段Python单元测试代码该怎么调用啊?

代码如下: #coding=utf-8 import unittest def createsuite(self): testunit=unittest.TestSuite() test_dir="C:\\Users\\***\\Desktop\\myprogram" discover=unittest.defaultTestLoader.discover(test_dir,pattern="test*.py",top_level_dir=None) for test_suite in discover: for test_case in test_suite: testunit.addTest(test_case) print testunit return testunit if __name__=="__main__": runner=unittest.TextTestRunner() runner.run(createsuite) 为什么运行的时候提示:Ran 0 tests in 0.294s,一个测试用例都没运行呢?明明打印输出的testunit是正常的,显示有4条测试用例;估计是下边runner调用的时候出问题了,求大神指导

谁会啊,不胜感激。同时运行几个死循环的.py文件,设置pycharm允许同时运行除外,毕竟不利于用户体验。

![图片说明](https://img-ask.csdn.net/upload/201910/11/1570764654_226893.png) ``` import os lst = os.listdir(os.getcwd()) # 获取当前目录下所有的文件名 for c in lst: if os.path.isfile(c) and c.endswith('.py') and c.find("run")== -1: #判断文件名是以.py结尾的,并且去掉run.py文件 print(c) #查看文件 os.system('python {}'.format(c)) #相当于在终端执行文件 python main.py ``` 用这段代码的问题就是,第一个0.py文件运行后,因为是一个死循环的程序,所以后面的文件一直不能运行,而且后面的文件也是死循环的文件。

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}") ```

python2.5中无法用next()函数的问题

需要用python写个命令行俄罗斯方块,在网上搜了一个源码,其中一段代码如下,由于该源码作者是在2.7环境下的,所以代码能实现,但是在2.5不行,求问大神如何改才能在2.5中实现到? patterns=u"■" #填充花色 def pTurntable(): while True: for c in patterns: yield c nPattern=pTurntable() print nPattern cellPattern=next(nPattern) ``` 全部代码如下: # -*- coding: cp936 -*- """python2.7 / Windows控制台""" import os,time,random,msvcrt helpInfo=u"""A S D W 操控 Num 1-4 游戏速度 Space 暂停 R 重玩 Q 变换花色 G 屏幕大小 Esc 退出""" gridWidth,gridHeight=10,20 #栅格宽高 rewardDict={1:1,2:3,3:6,4:10} #炸楼/得分表 gears={1:.64,2:.32,3:.16,4:.08} #速度/刷新时间间隔 gameSpeed=1 patterns=u"■" #填充花色■◇●¤◆※▓卐╬囧 def pTurntable(): while True: for c in patterns: yield c nPattern=pTurntable() print nPattern cellPattern=next(nPattern) #cellPattern=nPattern class Tetris(): mino_I=((0,0),(1,0),(2,0),(3,0)) , ((1,-1),(1,0),(1,1),(1,2)) mino_J=((0,0),(0,1),(1,1),(2,1)) , ((0,-1),(0,0),(0,1),(1,-1)) , ((0,0),(2,1),(1,0),(2,0)) , ((0,1),(1,-1),(1,0),(1,1)) mino_L=((0,0),(0,1),(1,0),(2,0)) , ((0,-1),(1,0),(1,1),(1,-1)) , ((0,1),(2,0),(1,1),(2,1)) , ((0,-1),(0,0),(0,1),(1,1)) mino_O=((0,0),(1,0),(0,1),(1,1)) , mino_S=((0,-1),(0,0),(1,1),(1,0)) , ((0,1),(1,0),(1,1),(2,0)) mino_Z=((0,0),(0,1),(1,-1),(1,0)) , ((0,0),(1,1),(1,0),(2,1)) mino_T=((0,0),(1,-1),(1,1),(1,0)) , ((0,1),(1,0),(1,1),(2,1)) , ((0,-1),(0,0),(0,1),(1,0)) , ((0,0),(1,1),(1,0),(2,0)) minos=(mino_I,mino_J,mino_L,mino_O,mino_S,mino_Z,mino_T) def __init__(self): self.matrix=[[0 for c in range(gridWidth)] for r in range(gridHeight)] #栅格:0表示空白,1表示降落中的方块,2表示落地的方块 self.score=0 self.iCY=self.iCY0=gridHeight #基点位置/初始位置 self.iCX=self.iCX0=gridWidth//2-1 self.focusFig,self.focusPos=self._minoRandPick() self.nextFig,self.nextPos=self._minoRandPick() self.cellsCoos=self._cellsCCalc(self.focusPos,self.iCX) #方块所在坐标 self.message=helpInfo def _minoRandPick(self): figure=random.choice(self.__class__.minos) posture=random.choice(figure) return figure,posture def _cellsCCalc(self,pos,cX): coosList=[] for row,col in pos: y,x=row+self.iCY,col+cX if x>=0 and x <gridWidth and y>=0 and y<gridHeight: coosList.append((y,x)) return coosList def _cellsFill(self,value=1): for y,x in self.cellsCoos: self.matrix[y][x]=value def _the911(self): """炸楼""" blackList=[] for r in set(cp[0] for cp in self.cellsCoos): if set(self.matrix[r])=={2}: blackList.append(r) if blackList: count=len(blackList) self.score+=rewardDict[count] for r in sorted(blackList,reverse=True): del self.matrix[r] self.matrix.append([0 for c in range(gridWidth)]) def _gameOver(self): global cellPattern def rOrQ(): key=msvcrt.getch() if key in (b'r',b'R'): self.__init__() return True elif key==b'\x1b': exit() while not msvcrt.kbhit() or not rOrQ(): cellPattern=next(nPattern) self.message=u"游戏结束\n\n┑( ̄Д  ̄)┍\n\n\n> R 重玩\n> Esc 退出" self.display() time.sleep(.5) def fallDown(self): for y,x in self.cellsCoos: if y-1<0 or self.matrix[y-1][x]==2: if self.iCY>=gridHeight-1: self._gameOver() return self._cellsFill(2) self._the911() self.iCX,self.iCY=self.iCX0,self.iCY0 self.focusFig,self.focusPos=self.nextFig,self.nextPos self.cellsCoos=self._cellsCCalc(self.focusPos,self.iCX) self.nextFig,self.nextPos=self._minoRandPick() return self._cellsFill(0) self.iCY-=1 self.cellsCoos=self._cellsCCalc(self.focusPos,self.iCX) self._cellsFill() def speedUp(self): for i in range(3): self.fallDown() def move(self,value): for x in [x+self.iCX for y,x in self.focusPos]: if x+value<0 or x+value>=gridWidth: return for y,x in self.cellsCoos: if (value==-1 and self.matrix[y][x-1]==2) or (value==1 and self.matrix[y][x+1]==2): return self._cellsFill(0) self.iCX+=value self.cellsCoos=self._cellsCCalc(self.focusPos,self.iCX) self._cellsFill() def rotate(self): ##重点是方块靠旁边能正常旋转 ori=1 if gridWidth//2-1>self.iCX else -1 for dev in range(3): nx=self.iCX+dev*ori idx=self.focusFig.index(self.focusPos) fnp=self.focusFig[0] if idx==len(self.focusFig)-1 else self.focusFig[idx+1] nc=self._cellsCCalc(fnp,nx) for y,x in nc: if self.matrix[y][x]==2: return if len(nc)==4 or not [True for c in ((x+nx) for y,x in fnp) if c<0 or c>=gridWidth]: #后面那部分为了刚开始的时候能旋转 break else: return self._cellsFill(0) self.focusPos=fnp self.iCX=nx self.cellsCoos=nc self._cellsFill() def display(self): msgL=self.message.splitlines() blank=u" " brightCell=cellPattern gridBoard=reversed(["".join((brightCell if c else blank) for c in r) for r in self.matrix]) nanoGrid=[[blank for c in range(4)] for r in range(4)] for y,x in self.nextPos: nanoGrid[y][x+1]=brightCell nanoGrid.insert(0,nanoGrid.pop()) nanoBoard=reversed(["".join(c for c in r) for r in nanoGrid]) infoBoard=[u"SCORE: %s"%self.score, "", u"NEXT :"] infoBoard.extend(nanoBoard) infoBoard.extend((u"SPEED: %s"%gameSpeed,"")) infoBoard.extend(list(" "*(gridHeight-9-len(msgL)))) infoBoard.extend(msgL) text="\n".join("".join(x) for x in zip([u"│"]*gridHeight,gridBoard,[u"│ "]*gridHeight,infoBoard)) os.system("cls") print("%s%s%s\n%s\n%s%s%s"%(u"┌",u"─"*gridWidth,u"┐",text,u"└",u"─"*gridWidth,u"┘")) # print("{0}{1}{2}\n{3}\n{4}{1}{5}".format("┌","─"*gridWidth,"┐",text,"└","┘")) def keyPress(tetris): ##方向键会与大写的 H P K M 键重合 global gameSpeed,cellPattern,gridWidth,gridHeight key=msvcrt.getch() if key in ('a','A','K'): tetris.move(-1) elif key in (b'd',b'D',b'M'): tetris.move(1) elif key in (b'w',b'W',b'\r',b'H'): tetris.rotate() elif key in (b's',b'S',b'P'): tetris.speedUp() elif key in (b' ',b'0'): tetris.message=u"§\n■D 已暂停\n\n\n\n> 任意键继续" tetris.display() msvcrt.getch() tetris.message=helpInfo elif key in (b'r',b'R'): if tetris.score!=0: tetris.message=u"重玩会清零得分,是否继续?\n\n(╬▔▽▔)↑ \n\n\n> 按 R 或回车确认\n> 其他任意键返回" tetris.display() if msvcrt.getch() not in (b'r',b'R',b'\r'): tetris.message=helpInfo return tetris.__init__() elif key in (b'1',b'2',b'3',b'4'): gameSpeed=int(key.decode()) elif key in (b'q',b'Q'): cellPattern=next(nPattern) elif key==b'\x1b': exit() elif key in (b'g',b'G'): tetris.message=u"更改尺寸会重置游戏,是否继续?\n\n(╬▔▽▔)↑\n\n\n> 按 G 或回车确认\n> 其他任意键返回" tetris.display() if msvcrt.getch() not in (b'g',b'G',b'\r'): tetris.message=helpInfo return tetris.message=u"> 高度若小于16,部分提示会无法显示!\n\n> 如果界面异常请将窗口最大化!\n\nㄟ(▔▽▔)ㄏ\n\n" tetris.display() gridWidth=_intInp(raw_input("\n屏幕宽度 当前值:%s\n(取值范围5-28)\n> "%gridWidth)) while gridWidth not in range(5,29): gridWidth=_intInp(raw_input("宽度必须是介于5-28之间的整数,请重新输入> ")) gridHeight=_intInp(raw_input("\n\n屏幕高度 当前值:%s\n(取值范围11-39)\n> "%gridHeight)) while gridHeight not in range(11,40): gridHeight=_intInp(raw_input("高度必须是介于11-39之间的整数,请重新输入> ")) tetris.__init__() tetris.display() _intInp=lambda inp:int(inp) if inp.isdigit() else 0 def run(): time.clock() while True: tetris=Tetris() t0=0 while not msvcrt.kbhit() or not keyPress(tetris): t1=time.clock() if t1-t0>gears[gameSpeed]: t0=t1 tetris.fallDown() tetris.display() time.sleep(.001) #少了这一行CPU占用率会飙升 if __name__=="__main__": run() ```

python 'if __name__ == "__main__":' 错误,直接执行测试(Terminal 运行正常)

main.py中的测试函数 import os.path as osp import pickle import model import weights import test def get_tf_implementation(weights_path, all_layer_outs=False): print("Making Structure") tf_model = model.make_deng_tf_test(verbose=True, all_layer_outs=all_layer_outs) print("Loading Weights") tf_model = weights.load_weights(tf_model, weights_path, verbose=True) return tf_model def get_test_data(cache_file): print("Loading Test Data") if osp.exists(cache_file): with open(cache_file, 'rb') as fid: roidb = pickle.load(fid) print('data is loaded from {}'.format(cache_file)) print(f"Number of Images to test: {len(roidb)}") return roidb def get_weighted_tf_implementation(weights_path, all_layer_outs=False): tf_model = get_tf_implementation(weights_path, all_layer_outs) model.show_model_info(tf_model) return tf_model def test_tf_implementation(cache_file, weights_path, all_layer_outs=False): # Get Weighted Model tf_model = get_weighted_tf_implementation(weights_path, all_layer_outs) # Load Cached Test Data roidb = get_test_data(cache_file) # Test Network results = test.test_net(tf_model, roidb) return results if __name__ == "__main__ 代码段: if __name__ == "__main__": results = test_tf_implementation(cache_file="roidb_test_19_smol.pkl", weights_path="rgbd_det_iter_40000.h5") Terminal运行一切正常,给cache-file和weights-path赋值,然后正常执行test_tf_implementation. 不知道问题出在哪里 错误提示: Using TensorFlow backend. EE ====================================================================== ERROR: main.get_test_data ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/xijiejiao/anaconda2/envs/python3/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) TypeError: get_test_data() missing 1 required positional argument: 'cache_file' -------------------- >> begin captured logging << -------------------- tensorflow: Level 1: Registering FakeQuantWithMinMaxArgs (<function _FakeQuantWithMinMaxArgsGradient at 0x1314c2598>) in gradient. tensorflow: Level 1: Registering FakeQuantWithMinMaxVars (<function _FakeQuantWithMinMaxVarsGradient at 0x1314c27b8>) in gradient. ``` ``` Error Traceback (most recent call last): File "/Users/xijiejiao/anaconda2/envs/python3/lib/python3.6/unittest/case.py", line 59, in testPartExecutor yield File "/Users/xijiejiao/anaconda2/envs/python3/lib/python3.6/unittest/case.py", line 605, in run testMethod() File "/Users/xijiejiao/anaconda2/envs/python3/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) Exception: get_test_data() missing 1 required positional argument: 'cache_file' -------------------- >> begin captured logging << -------------------- tensorflow: Level 1: Registering FakeQuantWithMinMaxArgs (<function _FakeQuantWithMinMaxArgsGradient at 0x1314c2598>) in gradient. tensorflow: Level 1: Registering FakeQuantWithMinMaxVars (<function _FakeQuantWithMinMaxVarsGradient at 0x1314c27b8>) in gradient. ``` ``` Error Traceback (most recent call last): File "/Users/xijiejiao/anaconda2/envs/python3/lib/python3.6/unittest/case.py", line 59, in testPartExecutor yield File "/Users/xijiejiao/anaconda2/envs/python3/lib/python3.6/unittest/case.py", line 605, in run testMethod() File "/Users/xijiejiao/anaconda2/envs/python3/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) TypeError: test_tf_implementation() missing 2 required positional arguments: 'cache_file' and 'weights_path' tensorflow: Level 1: Registering NcclAllReduce (<function _all_sum_grad at 0x131d62620>) in gradient. tensorflow: Level 1: Registering NcclReduce (<function _reduce_sum_grad at 0x131d628c8>) in gradient. tensorflow: Level 1: Registering NcclBroadcast (<function _broadcast_grad at 0x131d629d8>) in gradient. ``` ``` ====================================================================== ERROR: main.test_tf_implementation ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/xijiejiao/anaconda2/envs/python3/lib/python3.6/site-packages/nose/case.py", line 197, in runTest self.test(*self.arg) TypeError: test_tf_implementation() missing 2 required positional arguments: 'cache_file' and 'weights_path' ---------------------------------------------------------------------- Ran 2 tests in 0.020s FAILED (errors=2) Process finished with exit code 1 Assertion failed Assertion failed Assertion failed Assertion failed

用函数的返回值初始化一个类对象,这其中用了几次复制构造函数

这是我自己写的一段代码 #include<iostream> using namespace std; class Example { int num; public: Example(int i) { num=i; cout<<"This is construction with parameter.\n"; } Example() { num=0; cout<<"This is construction without parameter.\n"; } Example(Example& ex) { cout<<"This is Copy construction.\n"; } ~Example() { cout<<"This is deconstruction.\n"; } Example& operator =(Example& ex) { cout<<"This is assignment function.\n"; this->num=ex.num; return *this; } }; Example fun(Example b) { cout<<"fun().\n"; return b; } int main() { Example b(10); //(1) Example a=fun(b);//(2) cin.get(); } 该函数的输出为(亲测): This is construction without parameter. This is Copy construction. fun(). This is Copy construction. 书上说的也都是这样,但是我有个问题: main中第二步执行时首先调用复制构造函数对应传入的对象b生成一个临时对象(temp),return时再次调用复制构造函数生成一个临时对象用于返回,然后temp析构,按书上说的此刻程序就走完了,但是在main中这一步Example a=fun(b)不应该再用return的那个临时对象来初始化a吗?应该再调用一次复制构造函数才对啊?此处一直想不通,请高手来解答。

jupyter 为什么代码块之间数据不共享

猜想是不是因为一个代码块是一段单独的程序 求解:有无设置或插件可以让代码块之间的数据共享?

策略回测时,如何写一个函数判断某一个时刻在每天的交易时段内(比如9点半至3点),不涉及年月日的前提下?

from tqsdk import TqApi, TqSim, TargetPosTask, BacktestFinished, TqBacktest from tqsdk.tafunc import ma from datetime import date, datetime api = TqApi(TqSim(init_balance=1000000.0), backtest=TqBacktest(start_dt=date(2019, 2, 1), end_dt=datetime(2019,6,1))) symbol_front = "CFFEX.T1903" symbol_main = "CFFEX.T1906" symbol_after = "CFFEX.T1909" kline_day_front = api.get_kline_serial(symbol_front,24*60*60) kline_day_main = api.get_kline_serial(symbol_main,24*60*60) kline_day_after = api.get_kline_serial(symbol_after,24*60*60) klines_1min = api.get_kline_serial(symbol_main, 60,) ma120 = tafunc.ma(klines_1min["close"],120) target_pos = TargetPosTask(api,symbol_main) while True: api.wait_update() if api.is_changing(klines_1min): #确定主力合约时间段 if kline_day_front.close_oi <= kline_day_main.close_oi and kline_day_main.close_oi <=kline_day_after.close_oi: if time条件: #日内交易设置 ave_volume_5 = sum(klines_1min.volume.iloc[-6:-2]) #前5个k线成交量 if klines_1min.volume.iloc[-1] >= ave_volume_5: #放量是priority if klines_1min.close.iloc[-1] >ma120.iloc[-1]: #开仓条件 target_pos.set_target_volume(10) #开多 elif klines_1min.close.iloc[-1] <ma120.iloc[-1]: target_pos.set_target_volume(-10) #开空 else: target_pos.set_target_volume(0)

python PYQT5 UI窗口突然自动关闭

我想通过获得输入的数据传给函数,然后再利用函数输出想要的结果到tableView中。函数能print出结果,但传入tableView中时UI界面就突然自动关闭了。 烦请大神出手相助,谢谢! 代码如下: ``` #读取数据 db = pd.read_excel('C:/Users/Documents/Project/SQL/TBFA.xlsx') class Where_Failed_PN(QWidget): def __init__(self): super(Where_Failed_PN, self).__init__() self.ui = Ui_Where_Units() self.ui.setupUi(self) # 装载所有初始数据 modeldf = pandasModel(db) self.ui.dataTable.setModel(modeldf) #在label上显示输入UI窗口输入的数据 self.ui.PNedit.textEdited.connect(self.showText) input=self.ui.PNedit.sender() self.ui.PNlable.setText(input) self.ui.PNedit.editingFinished.connect(self.inputText) self.ui.getBtn.clicked.connect(self.inputText) def showText(self,Text): self.ui.PNlable.setText(Text) self.ui.PNlable.adjustSize() def inputText(self): self.ui.PNedit.end(True) inputText = self.ui.PNlable.text() #函数输出结果 PNdata = db[(db['PartNum'] == inputText)] print(PNdata)#在终端能显示结果,但UI窗口自动关闭了 #希望将结果显示在UI的tableView中 modeldf = pandasModel(PNdata) self.ui.dataTable.setModel(modeldf) if __name__ == '__main__': app = QApplication(sys.argv) main = Where_Failed_PN() main.show() sys.exit(app.exec_()) ```

Python如何实现多线程与多进程的配合工作?

#!/usr/bin/env python #coding=utf8 import multiprocessing import threading import threadpool import time import re import os ''' 想法: 开启了11个进程,第一个进程是以多线程方式运行,再通过进程间通信来使其他进程工作. ''' def put_test(str1): # 处理出函数名,开启多线程 print str1, q.put(str1) time.sleep(1) def get_test(): # 进程池除第一个以外的进程 print ' 5' print q.qsize(),os.getpid() print q.get(True,1) time.sleep(1) ############################################################### if __name__=='__main__': multiprocessing.freeze_support() q=multiprocessing.Queue(maxsize = 10) # 线程池 data=range(1,11) pool=threadpool.ThreadPool(10) requests=threadpool.makeRequests(put_test,data) [pool.putRequest(req) for req in requests] pool.wait() # 进程池 pool2 = multiprocessing.Pool(processes=3) for var in range(1,11): # 20个进程 pool2.apply_async(get_test,[]) pool2.close() pool2.join() print "size:",q.qsize() ``` ``` 这段代码出问题了,求助。

新人求教:请Python大佬帮我看看为什么这段代码会提示“SyntaxError: invalid syntax”语法错误

本来之前按照书上的好好的,但是不知道怎么的,后面修改代码的时候就出现了语法错误: Traceback (most recent call last): File "alien_invasion.py", line 9, in <module> import game_functions as gf File "D:\python_work\第12章\alien_invasion\game_functions.py", line 45 def check_play_button(ai_settings,screen,stats,sb,play_button,ship, ^ SyntaxError: invalid syntax ------------------ (program exited with code: 1) 请按任意键继续. . . 这个是我的代码 ``` def check_play_button(ai_settings,screen,stats,sb,play_button,ship, aliens,bullets,mouse_x,mouse_y): # 在玩家单击Play按钮时开始新游戏 # button_clicked = play_button.rect.collidepoint(mouse_x,mouse_y) if button_clicked and not stats.game_active: # 重置游戏设置 ai_settings.initialize_dynamic_settings() # 隐藏光标 pygame.mouse.set_visible(False) # 重置游戏统计信息 stats.reset_stats() stats.game_active = True # 重置记分牌图像 sb.prep_score() sb.prep_high_score() sb.prep_level() sb.prep_ships() # 清空外星人列表和子弹列表 aliens.empty() bullets.empty() #创建一群新的外星人,并让飞船居中 create_fleet(ai_settings,screen,ship,aliens) ship.center_ship() ``` ![再原文件里](https://img-ask.csdn.net/upload/202004/19/1587308473_671891.png) 后来我有重新贴到新的.PY文件中 ![粘贴在新的.PY文件后](https://img-ask.csdn.net/upload/202004/19/1587308522_263589.png) 做过的措施: 排除了中文符号的可能(用英文字符逐个修改的); 然后也取消过缩进让后面的参数在一排还是会提示错误; 重启过电脑; 将此段代码重新编写过; 为什么会出现语法错误呢?请求大佬指教! 以下是整个文件的代码 ``` # coding:utf-8 # game_functions.py import sys from time import sleep import pygame from bullet import Bullet from alien import Alien def check_keydown_events(event,ai_settings,screen,ship,bullets): if event.key == pygame.K_RIGHT: ship.moving_right = True elif event.key == pygame.K_LEFT: ship.moving_left = True elif event.key == pygame.K_SPACE: fire_bullet(ai_settings,screen,ship,bullets) elif event.key == pygame.K_q: sys.exit() def fire_bullet(ai_settings,screen,ship,bullets): if len(bullets) < ai_settings.bullets_allowed: new_bullet = Bullet(ai_settings,screen,ship) bullets.add(new_bullet) def check_keyup_events(event,ship): if event.key == pygame.K_RIGHT: ship.moving_right = False elif event.key == pygame.K_LEFT: ship.moving_left = False def check_events(ai_settings,screen,stats,sb,play_button,ship,aliens, bullets): # 响应按键和鼠标事件 # for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: check_keydown_events(event,ai_settings,screen,ship,bullets) elif event.type == pygame.KEYUP: check_keyup_events(event,ship) elif event.type == pygame.MOUSEBUTTONDOWN: mouse_x,mouse_y = pygame.mouse.get_pos() check_play_button(ai_settings,screen,stats,sb,play_button, ship,aliens,bullets,mouse_x,mouse_y def check_play_button(ai_settings,screen,stats,sb,play_button,ship, aliens,bullets,mouse_x,mouse_y): # 在玩家单击Play按钮时开始新游戏 # button_clicked = play_button.rect.collidepoint(mouse_x,mouse_y) if button_clicked and not stats.game_active: # 重置游戏设置 ai_settings.initialize_dynamic_settings() # 隐藏光标 pygame.mouse.set_visible(False) # 重置游戏统计信息 stats.reset_stats() stats.game_active = True # 重置记分牌图像 sb.prep_score() sb.prep_high_score() sb.prep_level() sb.prep_ships() # 清空外星人列表和子弹列表 aliens.empty() bullets.empty() #创建一群新的外星人,并让飞船居中 create_fleet(ai_settings,screen,ship,aliens) ship.center_ship() def update_screen(ai_settings,screen,stats,sb,ship,aliens,bullets, play_button): # 更新屏幕上的图像,并切换到新屏幕 screen.fill(ai_settings.bg_color) for bullet in bullets.sprites(): bullet.draw_bullet() ship.blitme() aliens.draw(screen) # 显示得分 sb.show_score() # 如果游戏处于非活动状态,就绘制Play按钮 if not stats.game_active: play_button.draw_button() # 让最近绘制的屏幕可见 pygame.display.flip() def update_bullets(ai_settings,screen,stats,sb,ship,aliens,bullets): #更新子弹的位置,并删除已消失的子弹 bullets.update() #删除已消失的子弹 for bullet in bullets.copy(): if bullet.rect.bottom <= 0: bullets.remove(bullet) check_bullet_alien_collisions(ai_settings,screen,stats,sb,ship, aliens,bullets) def check_bullet_alien_collisions(ai_settings,screen,stats,sb,ship, aliens,bullets): ##响应子弹和外星人的碰撞## # 删除发生碰撞的子弹和外星人 collisions = pygame.sprite.groupcollide(bullets,aliens,True,True) if collisions: for aliens in collisions.values(): #1 stats.score += ai_settings.alien_points * len(aliens) sb.prep_score() check_high_score(stats,sb) if len(aliens) == 0: # 如果整群外星人都被消灭,就提高一个等级 bullets.empty() #p.s在此调用settings.py的increase_speed方法 ai_settings.increase_speed() #提高等级 stats.level += 1 sb.prep_level() create_fleet(ai_settings,screen,ship,aliens) def get_number_aliens_x(ai_settings,alien_width): # 计算每行可容纳多少个外星人 available_space_x = ai_settings.screen_width - 2 * alien_width number_aliens_x = int(available_space_x / (2 * alien_width)) return number_aliens_x def get_number_rows(ai_settings,ship_height,alien_height): # 计算屏幕可容纳多少行外星人 available_space_y = (ai_settings.screen_height - (3 * alien_height) - ship_height) number_rows = int(available_space_y / (2 * alien_height)) return number_rows def create_alien(ai_settings,screen,aliens,alien_number,row_number): # 创建一个外星人并将其放在当前行 alien = Alien(ai_settings,screen) alien_width = alien.rect.width alien.x = alien_width + 2 * alien_width * alien_number alien.rect.x = alien.x alien.rect.y = alien.rect.height + 2 * alien.rect.height * row_number aliens.add(alien) def create_fleet(ai_settings,screen,ship,aliens): # 创建外星人群 # 创建一个外星人,并计算每行可容纳多少个外星人 alien = Alien(ai_settings,screen) number_aliens_x = get_number_aliens_x(ai_settings,alien.rect.width) number_rows = get_number_rows(ai_settings,ship.rect.height, alien.rect.height) # 创建外星人群 for row_number in range(number_rows): for alien_number in range(number_aliens_x): create_alien(ai_settings,screen,aliens,alien_number,row_number) def check_fleet_edges(ai_settings,aliens): # 有外星人到达边缘时采取相应的措施 for alien in aliens.sprites(): if alien.check_edges(): change_fleet_direction(ai_settings,aliens) break def change_fleet_direction(ai_settings,aliens): # 将整群外星人下移,并改变它们的方向""" for alien in aliens.sprites(): alien.rect.y += ai_settings.fleet_drop_speed ai_settings.fleet_direction *= -1 def ship_hit(ai_settings,screen,stats,sb,ship,aliens,bullets): """响应被外星人撞到的飞船""" if stats.ships_left >0 : # 将ships_left减1 stats.ships_left -= 1 # 更新记分牌 sb.prep_ships() #清空外星人列表和子弹列表 aliens.empty() bullets.empty() #创建一群新的外星人,并将飞船放到屏幕底端中央 create_fleet(ai_settings,screen,ship,aliens) ship.center_ship() # 暂停 sleep(0.5) else: stats.game_active = False pygame.mouse.set_visible(True) def check_aliens_bottom(ai_settings,screen,stats,sb,ship,aliens,bullets): # 检查是否有外星人抵达屏幕底端 # screen_rect = screen.get_rect() for alien in aliens.sprites(): if alien.rect.bottom >= screen_rect.bottom: # 像飞船被碰到一样进行处理 ship_hit(ai_settings,screen,stats,sb,ship,aliens,bullets) break def update_aliens(ai_settings,screen,stats,sb,ship,aliens,bullets): ##PS:注意 screen,stats交换了位置 # 检查是否外星人位于屏幕边缘,并更新整群外星人的位置 # check_fleet_edges(ai_settings,aliens) aliens.update() # 检测外星人和飞船之间的碰撞 if pygame.sprite.spritecollideany(ship,aliens): ship_hit(ai_settings,screen,stats,sb,ship,aliens,bullets) ##PS:注意 screen,stats交换了位置 # 检查是否有外星人到达屏幕底端 check_aliens_bottom(ai_settings,screen,stats,sb,ship,aliens,bullets) def check_high_score(stats,sb): ###检查是否诞生了新的最高得分### if stats.score > stats.high_score: stats.high_score = stats.score sb.prep_high_score() ```

一个求函数的积分的程序执行问题

#define _CRT_SECURE_NO_DEPRECATE #include<stdio.h> double integrate(double, double, int); double equa(double); /*函数说明,背积函数,具体函数可替换*/ float a, b, c; void main() { double leftlimit, rightlimit;/*积分上限,下限*/ int n;/*梯形划分数*/ printf("请输入被积分函数的系数:a,b,c:\n"); scanf("%f%f%f", &a, &b, &c); printf("请输入被积分函数的上限及下限:\n"); do { scanf("%lf%lf", &leftlimit, &rightlimit); if (leftlimit > rightlimit) printf("积分下限应该小于上限,请重新输入:"); } while (leftlimit < rightlimit); printf("请输入被积分函数的划分数(要求正整数):\n"); getchar(); scanf("%d", &n); if (n < 0) n = -n;/*对用户输入的负整数进行取正*/ printf("积分结果为=%.2f\n", integrate(leftlimit, rightlimit,n)); system("pause"); } /*积分求解函数*/ double integrate(double lower, double upper, int n) { double h, si, area = 0; int i; h = (upper - lower) / n; for (i = 0;i < n;i++) { si = h*(equa(lower + i*h) + equa(lower + (i + 1)*h)) / 2; area = si + area; } return area; } /*被积函数*/ double equa(double xi) { return a*xi*xi + b*xi + c; }

编写函数del(char str[])将字符串str中的小写字母删除

//编写函数del(char str[])将字符串str中的小写字母删除。编写主函数,在主函数中定义字符数组s[80],从键盘输入一字符串给s,通过调用函数del,将字符数组s中的小写字母删除,并输出删除后的字符串 #include "stdio.h" #include "stdlib.h" main() {char s[80]; gets(s); del(s); printf("\n%s", s ); system("pause"); } del(char str[]) {/************found************/ }//大佬能用萌新看得懂的语句写吗,刚刚学han'shu

分段函数:如果x为0,则y的值为1000,如果x不为0,y的值为x分之1

求解,有两段代码,第一段不对,第二段为什么对, 第一段 #include<stdio.h> int main(void) { int x=0; float y=0; scanf("%d",&x); if (x=0) { printf("y=1000\n"); } else { printf("y=%f\n",(float)1/x); } return 0; } 第二段 #include<stdio.h> int main(void) { int x=0; float y=0; scanf("%d",&x); if (x!=0) { printf("y=%f\n",(float)1/x); } else { printf("y=1000\n"); } return 0; }

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

一文带你入门Java Stream流,太强了

两个星期以前,就有读者强烈要求我写一篇 Java Stream 流的文章,我说市面上不是已经有很多了吗,结果你猜他怎么说:“就想看你写的啊!”你看你看,多么苍白的喜欢啊。那就“勉为其难”写一篇吧,嘻嘻。 单从“Stream”这个单词上来看,它似乎和 java.io 包下的 InputStream 和 OutputStream 有些关系。实际上呢,没毛关系。Java 8 新增的 Stream 是为...

立即提问
相关内容推荐