小编Dev*_*oka的帖子

Python多处理示例不起作用

我正在努力学习如何使用,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文件运行的

python multiprocessing

11
推荐指数
2
解决办法
3万
查看次数

登录Scrapy

我在登录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吗?

python documentation logging scrapy

6
推荐指数
1
解决办法
7709
查看次数

环路性能下降

我有以下代码:

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%

python dictionary pickle

3
推荐指数
1
解决办法
233
查看次数

从列表中选择唯一值

我想要做的是,有一个字符列表,每个都是一个过程,然后我想从这个列表中随机选择(或伪随机,无关紧要),并执行该过程,然后我想要能够再次运行它,而不是获得相同的值,例如,如果我有五个值,我希望能够运行它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次.我搜索了几个小时的方法来做到这一点,但我找不到一个.

python random unique python-2.7

1
推荐指数
1
解决办法
285
查看次数

列出成员资格测试或设置

在添加项目之前检查项目是否已在列表中更有效:

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)

python list set

1
推荐指数
1
解决办法
636
查看次数

编写python程序来编写python程序

我正在尝试编写一个程序来自动化制作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)编写多行的方法使用过程编写过程的更好方法

python procedure file python-2.7

0
推荐指数
1
解决办法
372
查看次数

程序清单

我想创建一个程序列表,但是当我使用它时

Characters=[Percy(),Annabeth(),Leo(),Chuck(),Sarah()]
Run Code Online (Sandbox Code Playgroud)

每个过程带来了从性格报价一个Tkinter的窗口,但如果我运行的代码,而不是把它像一个列表,蟒蛇为了执行每个过程,我在做这完全错了吗?或者没有办法创建程序列表.注意:它需要在列表中,因为我需要能够访问其中的随机位置

python tkinter list python-2.7

0
推荐指数
1
解决办法
163
查看次数

清理嵌套函数调用

我已经编写了几个顺序运行的函数,每个函数都将前一个函数的输出作为输入,所以为了运行它,我必须运行这行代码

make_list(cleanup(get_text(get_page(URL))))
Run Code Online (Sandbox Code Playgroud)

而我发现这个丑陋且效率低下,是否有更好的方法来执行顺序函数调用?

python nested function

0
推荐指数
1
解决办法
227
查看次数