我正在努力学习如何使用,multiprocessing但我无法让它工作.以下是文档中的代码
from multiprocessing import Process
def f(name):
print 'hello', name
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
Run Code Online (Sandbox Code Playgroud)
它应该输出
'你好鲍勃'
但我得到了
>
没有错误或其他消息,它只是坐在那里,它是IDLE从具有32位版本的Python 2.7的Windows 7机器上保存的.py文件运行的
我在登录scrapy方面遇到了麻烦,我发现的大部分内容已经过时了.
我已经设置LOG_FILE="log.txt"了settings.py文件,从文档中,这应该工作:
Scrapy在每个Spider实例中提供了一个记录器,可以像这样访问和使用:
import scrapy
class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['http://scrapinghub.com']
def parse(self, response):
self.logger.info('Parse function called on %s', response.url)
Run Code Online (Sandbox Code Playgroud)
但当我这样做时:
class MySpider(CrawlSpider):
#other code
def parse_page(self,response):
self.logger.info("foobar")
Run Code Online (Sandbox Code Playgroud)
我一无所获.如果我订
logger = logging.basicConfig(filename="log.txt",level=logging.INFO)
Run Code Online (Sandbox Code Playgroud)
在我的文件的顶部,在我的导入之后,它创建了一个日志文件,并且默认输出被记录得很好,但是
class MySpider(CrawlSpider):
#other code
def parse_page(self,response):
logger.info("foobar")
Run Code Online (Sandbox Code Playgroud)
无法出现.我也试过把它放在课堂上__init__,如下:
def __init__(self, *a, **kw):
super(FanfictionSpider, self).__init__(*a, **kw)
logging.basicConfig(filename="log.txt",level=logging.INFO)
Run Code Online (Sandbox Code Playgroud)
我再次没有输出到文件,只是到控制台,并foobar没有显示.有人可以指导我如何正确登录Scrapy吗?
我有以下代码:
keywordindex = cPickle.load(open('keywordindex.p','rb'))#contains~340 thousand items
masterIndex = {}
indexes = [keywordindex]
for partialIndex in indexes:
start = time.time()
for key in partialIndex.iterkeys():
if key not in masterIndex.keys():
masterIndex[key]= partialIndex[key]
elif key in masterIndex.keys():
masterIndex[key].extend(partialIndex[key])
cPickle.dump(masterIndex,open('MasterIndex.p','wb'))
print int(time.time() - start), ' seconds'#every thousand loops
Run Code Online (Sandbox Code Playgroud)
并且我在循环运行时遇到性能下降,前10万次大约需要5秒钟,但每10万左右需要一秒钟,直到它花费3倍的时间.我试图以各种可能的方式简化代码,但我似乎无法弄清楚导致它的原因.是否有一个原因?这不是内存问题,我的使用率仅为30%
我想要做的是,有一个字符列表,每个都是一个过程,然后我想从这个列表中随机选择(或伪随机,无关紧要),并执行该过程,然后我想要能够再次运行它,而不是获得相同的值,例如,如果我有五个值,我希望能够运行它5次,那么第六次运行它,它什么都不返回.这是代码:
from Tkinter import*
from random import randint
Characters=[Percy,Annabeth,Leo,Chuck,Sarah]
Used = []
def callback():
end = len(Characters)-1
rando = randint(0,end)
Characters[rando]
for i in Characters:
if Characters[rando] in Used:
print 'This has already been used'
else:
Characters[rando]()
Used.append(Characters[rando])
break
game = Tk()
game.geometry('50x50+700+100')
Button1 = Button(game,text = '1',command =lambda:callback() )
Button1.pack(side=LEFT)
game.mainloop()
Run Code Online (Sandbox Code Playgroud)
我想要得到
callback()
Run Code Online (Sandbox Code Playgroud)
为了正常运行,我已经尝试了你所看到的,但我也试过了
if Characters[rando] in Used:
print 'This has already been used'
else:
Characters[rando]
Used.append(Characters[rando])
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,它将多次运行相同的程序,例如,'Leo'可能连续执行3次.我搜索了几个小时的方法来做到这一点,但我找不到一个.
在添加项目之前检查项目是否已在列表中更有效:
for word in open('book.txt','r').read().split():
if word in list:
pass
else:
list.append(item)
Run Code Online (Sandbox Code Playgroud)
或者添加一切然后运行set()吗?像这样:
for word in open('book.txt','r').read().split():
list.append(word)
list = set(list)
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个程序来自动化制作tkinter窗口的过程,所以我试图使用open()函数打开一个txt文件(可能应该是.py不应该吗?)一个程序这使得窗口,我试图让它编写的代码是:
def a_procedure():
window = Tk()
#rest of code necessary to make a Tkinter window
Run Code Online (Sandbox Code Playgroud)
但问题是,当我使用时
open()
textfile.write("def a_procedure()"/
"window = Tk()")
Run Code Online (Sandbox Code Playgroud)
我在文本文件中得到的是:def a_procedure():window = TK()#rest of text
是否存在(a)使用open()或(b)编写多行的方法使用过程编写过程的更好方法
我想创建一个程序列表,但是当我使用它时
Characters=[Percy(),Annabeth(),Leo(),Chuck(),Sarah()]
Run Code Online (Sandbox Code Playgroud)
每个过程带来了从性格报价一个Tkinter的窗口,但如果我运行的代码,而不是把它像一个列表,蟒蛇为了执行每个过程,我在做这完全错了吗?或者没有办法创建程序列表.注意:它需要在列表中,因为我需要能够访问其中的随机位置
我已经编写了几个顺序运行的函数,每个函数都将前一个函数的输出作为输入,所以为了运行它,我必须运行这行代码
make_list(cleanup(get_text(get_page(URL))))
Run Code Online (Sandbox Code Playgroud)
而我发现这个丑陋且效率低下,是否有更好的方法来执行顺序函数调用?